// function apeman_init ; begin
   0: LD_INT 0
   2: PPUSH
// uc_side := 0 ;
   3: LD_ADDR_OWVAR 20
   7: PUSH
   8: LD_INT 0
  10: ST_TO_ADDR
// uc_nation := nation_nature ;
  11: LD_ADDR_OWVAR 21
  15: PUSH
  16: LD_INT 0
  18: ST_TO_ADDR
// hc_class := class_apeman ;
  19: LD_ADDR_OWVAR 28
  23: PUSH
  24: LD_INT 12
  26: ST_TO_ADDR
// if hc_attr [ 2 ] < 12 then
  27: LD_OWVAR 29
  31: PUSH
  32: LD_INT 2
  34: ARRAY
  35: PUSH
  36: LD_INT 12
  38: LESS
  39: IFFALSE 78
// hc_attr = [ hc_attr [ 1 ] + 5 , hc_attr [ 2 ] + 1 ] else
  41: LD_ADDR_OWVAR 29
  45: PUSH
  46: LD_OWVAR 29
  50: PUSH
  51: LD_INT 1
  53: ARRAY
  54: PUSH
  55: LD_INT 5
  57: PLUS
  58: PUSH
  59: LD_OWVAR 29
  63: PUSH
  64: LD_INT 2
  66: ARRAY
  67: PUSH
  68: LD_INT 1
  70: PLUS
  71: PUSH
  72: EMPTY
  73: LIST
  74: LIST
  75: ST_TO_ADDR
  76: GO 109
// hc_attr = [ hc_attr [ 1 ] + 5 , hc_attr [ 2 ] ] ;
  78: LD_ADDR_OWVAR 29
  82: PUSH
  83: LD_OWVAR 29
  87: PUSH
  88: LD_INT 1
  90: ARRAY
  91: PUSH
  92: LD_INT 5
  94: PLUS
  95: PUSH
  96: LD_OWVAR 29
 100: PUSH
 101: LD_INT 2
 103: ARRAY
 104: PUSH
 105: EMPTY
 106: LIST
 107: LIST
 108: ST_TO_ADDR
// hc_sex := sex_male ;
 109: LD_ADDR_OWVAR 27
 113: PUSH
 114: LD_INT 1
 116: ST_TO_ADDR
// hc_importance := 0 ;
 117: LD_ADDR_OWVAR 32
 121: PUSH
 122: LD_INT 0
 124: ST_TO_ADDR
// hc_agressivity := Rand ( - 20 , 20 ) ;
 125: LD_ADDR_OWVAR 35
 129: PUSH
 130: LD_INT 20
 132: NEG
 133: PPUSH
 134: LD_INT 20
 136: PPUSH
 137: CALL_OW 12
 141: ST_TO_ADDR
// end ;
 142: LD_VAR 0 1
 146: RET
// function prepare_apemen ; var i , j , un , ape , first , d1 , d2 ; begin
 147: LD_INT 0
 149: PPUSH
 150: PPUSH
 151: PPUSH
 152: PPUSH
 153: PPUSH
 154: PPUSH
 155: PPUSH
 156: PPUSH
// if not amount_of_apemen then
 157: LD_EXP 18
 161: NOT
 162: IFFALSE 166
// exit ;
 164: GO 266
// ape := 0 ;
 166: LD_ADDR_VAR 0 5
 170: PUSH
 171: LD_INT 0
 173: ST_TO_ADDR
// repeat Wait ( ( ape + 1 ) * Rand ( 0 0$10 , 1 1$0 ) ) ;
 174: LD_VAR 0 5
 178: PUSH
 179: LD_INT 1
 181: PLUS
 182: PUSH
 183: LD_INT 350
 185: PPUSH
 186: LD_INT 2100
 188: PPUSH
 189: CALL_OW 12
 193: MUL
 194: PPUSH
 195: CALL_OW 67
// apeman_init ;
 199: CALL 0 0 0
// PlaceUnitArea ( CreateHuman , Base1ApeArea , false ) ;
 203: CALL_OW 44
 207: PPUSH
 208: LD_INT 4
 210: PPUSH
 211: LD_INT 0
 213: PPUSH
 214: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base2ApeArea , false ) ;
 218: CALL_OW 44
 222: PPUSH
 223: LD_INT 5
 225: PPUSH
 226: LD_INT 0
 228: PPUSH
 229: CALL_OW 49
// Wait ( 3 ) ;
 233: LD_INT 3
 235: PPUSH
 236: CALL_OW 67
// ape := ape + 1 ;
 240: LD_ADDR_VAR 0 5
 244: PUSH
 245: LD_VAR 0 5
 249: PUSH
 250: LD_INT 1
 252: PLUS
 253: ST_TO_ADDR
// until ape >= amount_of_apemen ;
 254: LD_VAR 0 5
 258: PUSH
 259: LD_EXP 18
 263: GREATEREQUAL
 264: IFFALSE 174
// end ;
 266: LD_VAR 0 1
 270: RET
// every 0 0$15 do
 271: GO 273
 273: DISABLE
// begin prepare_apemen ;
 274: CALL 147 0 0
// end ; end_of_file
 278: END
// export ExtraStrings ; export function ShowTimer ; var AllStrings ; begin
 279: LD_INT 0
 281: PPUSH
 282: PPUSH
// AllStrings := [ #Multi1x1-Time , tick ] ;
 283: LD_ADDR_VAR 0 2
 287: PUSH
 288: LD_STRING #Multi1x1-Time
 290: PUSH
 291: LD_OWVAR 1
 295: PUSH
 296: EMPTY
 297: LIST
 298: LIST
 299: ST_TO_ADDR
// Display_Strings := AllStrings ;
 300: LD_ADDR_OWVAR 47
 304: PUSH
 305: LD_VAR 0 2
 309: ST_TO_ADDR
// end ;
 310: LD_VAR 0 1
 314: RET
// every 0 0$1 do
 315: GO 317
 317: DISABLE
// begin ShowTimer ;
 318: CALL 279 0 0
// enable ;
 322: ENABLE
// end ; end_of_file
 323: END
// every 1 1$0 + 0 0$0.3 marked 10 do
 324: GO 326
 326: DISABLE
// begin CreateCratesAnywhere ( Rand ( 4 , 5 ) , true ) ;
 327: LD_INT 4
 329: PPUSH
 330: LD_INT 5
 332: PPUSH
 333: CALL_OW 12
 337: PPUSH
 338: LD_INT 1
 340: PPUSH
 341: CALL_OW 57
// enable ;
 345: ENABLE
// end ;
 346: END
// every 0 0$1 + 0 0$0.6 marked 10 do var i , amount ;
 347: GO 349
 349: DISABLE
 350: LD_INT 0
 352: PPUSH
 353: PPUSH
// begin case tick of 1 .. 1 1$0 :
 354: LD_OWVAR 1
 358: PUSH
 359: LD_INT 1
 361: DOUBLE
 362: GREATEREQUAL
 363: IFFALSE 371
 365: LD_INT 2100
 367: DOUBLE
 368: LESSEQUAL
 369: IFTRUE 373
 371: GO 401
 373: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$10 , 0 0$30 ) ) ; 1 1$0 + 1 .. 5 5$0 :
 374: LD_EXP 16
 378: PUSH
 379: LD_INT 100
 381: DIVREAL
 382: PUSH
 383: LD_INT 350
 385: PPUSH
 386: LD_INT 1050
 388: PPUSH
 389: CALL_OW 12
 393: MUL
 394: PPUSH
 395: CALL_OW 67
 399: GO 611
 401: LD_INT 2100
 403: PUSH
 404: LD_INT 1
 406: PLUS
 407: DOUBLE
 408: GREATEREQUAL
 409: IFFALSE 417
 411: LD_INT 10500
 413: DOUBLE
 414: LESSEQUAL
 415: IFTRUE 419
 417: GO 447
 419: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$30 , 0 0$45 ) ) ; 5 5$0 + 1 .. 10 10$0 :
 420: LD_EXP 16
 424: PUSH
 425: LD_INT 100
 427: DIVREAL
 428: PUSH
 429: LD_INT 1050
 431: PPUSH
 432: LD_INT 1575
 434: PPUSH
 435: CALL_OW 12
 439: MUL
 440: PPUSH
 441: CALL_OW 67
 445: GO 611
 447: LD_INT 10500
 449: PUSH
 450: LD_INT 1
 452: PLUS
 453: DOUBLE
 454: GREATEREQUAL
 455: IFFALSE 463
 457: LD_INT 21000
 459: DOUBLE
 460: LESSEQUAL
 461: IFTRUE 465
 463: GO 493
 465: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$45 , 1 1$0 ) ) ; 10 10$0 + 1 .. 20 20$0 :
 466: LD_EXP 16
 470: PUSH
 471: LD_INT 100
 473: DIVREAL
 474: PUSH
 475: LD_INT 1575
 477: PPUSH
 478: LD_INT 2100
 480: PPUSH
 481: CALL_OW 12
 485: MUL
 486: PPUSH
 487: CALL_OW 67
 491: GO 611
 493: LD_INT 21000
 495: PUSH
 496: LD_INT 1
 498: PLUS
 499: DOUBLE
 500: GREATEREQUAL
 501: IFFALSE 509
 503: LD_INT 42000
 505: DOUBLE
 506: LESSEQUAL
 507: IFTRUE 511
 509: GO 539
 511: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$0 , 1 1$15 ) ) ; 20 20$0 + 1 .. 30 30$0 :
 512: LD_EXP 16
 516: PUSH
 517: LD_INT 100
 519: DIVREAL
 520: PUSH
 521: LD_INT 2100
 523: PPUSH
 524: LD_INT 2625
 526: PPUSH
 527: CALL_OW 12
 531: MUL
 532: PPUSH
 533: CALL_OW 67
 537: GO 611
 539: LD_INT 42000
 541: PUSH
 542: LD_INT 1
 544: PLUS
 545: DOUBLE
 546: GREATEREQUAL
 547: IFFALSE 555
 549: LD_INT 63000
 551: DOUBLE
 552: LESSEQUAL
 553: IFTRUE 557
 555: GO 585
 557: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$15 , 1 1$30 ) ) ; else
 558: LD_EXP 16
 562: PUSH
 563: LD_INT 100
 565: DIVREAL
 566: PUSH
 567: LD_INT 2625
 569: PPUSH
 570: LD_INT 3150
 572: PPUSH
 573: CALL_OW 12
 577: MUL
 578: PPUSH
 579: CALL_OW 67
 583: GO 611
 585: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$15 , 2 2$30 ) ) ; end ;
 586: LD_EXP 16
 590: PUSH
 591: LD_INT 100
 593: DIVREAL
 594: PUSH
 595: LD_INT 2625
 597: PPUSH
 598: LD_INT 5250
 600: PPUSH
 601: CALL_OW 12
 605: MUL
 606: PPUSH
 607: CALL_OW 67
// amount := Rand ( 3 , 5 ) ;
 611: LD_ADDR_VAR 0 2
 615: PUSH
 616: LD_INT 3
 618: PPUSH
 619: LD_INT 5
 621: PPUSH
 622: CALL_OW 12
 626: ST_TO_ADDR
// for i in ( Side_Positions diff [ 0 ] ) do
 627: LD_ADDR_VAR 0 1
 631: PUSH
 632: LD_EXP 26
 636: PUSH
 637: LD_INT 0
 639: PUSH
 640: EMPTY
 641: LIST
 642: DIFF
 643: PUSH
 644: FOR_IN
 645: IFFALSE 694
// CreateCratesXYR ( amount , start_def [ i ] [ 1 ] , start_def [ i ] [ 2 ] , 20 , true ) ;
 647: LD_VAR 0 2
 651: PPUSH
 652: LD_EXP 32
 656: PUSH
 657: LD_VAR 0 1
 661: ARRAY
 662: PUSH
 663: LD_INT 1
 665: ARRAY
 666: PPUSH
 667: LD_EXP 32
 671: PUSH
 672: LD_VAR 0 1
 676: ARRAY
 677: PUSH
 678: LD_INT 2
 680: ARRAY
 681: PPUSH
 682: LD_INT 20
 684: PPUSH
 685: LD_INT 1
 687: PPUSH
 688: CALL_OW 56
 692: GO 644
 694: POP
 695: POP
// enable ;
 696: ENABLE
// end ;
 697: PPOPN 2
 699: END
// every 0 0$20 + 0 0$0.9 marked 10 do var i , filter ;
 700: GO 702
 702: DISABLE
 703: LD_INT 0
 705: PPUSH
 706: PPUSH
// begin if GetResourceArea ( MZBaseArea , mat_cans ) < ( ( 200 - shipments_density ) / 100 * 5 ) then
 707: LD_INT 6
 709: PPUSH
 710: LD_INT 1
 712: PPUSH
 713: CALL_OW 287
 717: PUSH
 718: LD_INT 200
 720: PUSH
 721: LD_EXP 16
 725: MINUS
 726: PUSH
 727: LD_INT 100
 729: DIVREAL
 730: PUSH
 731: LD_INT 5
 733: MUL
 734: LESS
 735: IFFALSE 758
// CreateCratesArea ( Rand ( 3 , 5 ) , MZBaseArea , true ) ;
 737: LD_INT 3
 739: PPUSH
 740: LD_INT 5
 742: PPUSH
 743: CALL_OW 12
 747: PPUSH
 748: LD_INT 6
 750: PPUSH
 751: LD_INT 1
 753: PPUSH
 754: CALL_OW 55
// enable ;
 758: ENABLE
// end ; end_of_file
 759: PPOPN 2
 761: END
// on BuildingStarted ( b , u ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
 762: LD_VAR 0 1
 766: PPUSH
 767: CALL_OW 266
 771: PUSH
 772: LD_INT 0
 774: PUSH
 775: LD_INT 1
 777: PUSH
 778: EMPTY
 779: LIST
 780: LIST
 781: IN
 782: IFFALSE 807
// SetBName ( b , @ & GetSide ( b ) ) ;
 784: LD_VAR 0 1
 788: PPUSH
 789: LD_STRING @
 791: PUSH
 792: LD_VAR 0 1
 796: PPUSH
 797: CALL_OW 255
 801: STR
 802: PPUSH
 803: CALL_OW 500
// end ;
 807: PPOPN 2
 809: END
// on BuildingCaptured ( b , o , e ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
 810: LD_VAR 0 1
 814: PPUSH
 815: CALL_OW 266
 819: PUSH
 820: LD_INT 0
 822: PUSH
 823: LD_INT 1
 825: PUSH
 826: EMPTY
 827: LIST
 828: LIST
 829: IN
 830: IFFALSE 855
// SetBName ( b , @ & GetSide ( b ) ) ;
 832: LD_VAR 0 1
 836: PPUSH
 837: LD_STRING @
 839: PUSH
 840: LD_VAR 0 1
 844: PPUSH
 845: CALL_OW 255
 849: STR
 850: PPUSH
 851: CALL_OW 500
// end ;
 855: PPOPN 3
 857: END
// on UnitDestroyed ( unit ) do begin if GetSide ( unit ) = randomedColors [ 1 ] and GetType ( unit ) = unit_building then
 858: LD_VAR 0 1
 862: PPUSH
 863: CALL_OW 255
 867: PUSH
 868: LD_EXP 42
 872: PUSH
 873: LD_INT 1
 875: ARRAY
 876: EQUAL
 877: PUSH
 878: LD_VAR 0 1
 882: PPUSH
 883: CALL_OW 247
 887: PUSH
 888: LD_INT 3
 890: EQUAL
 891: AND
 892: IFFALSE 1584
// begin if GetBType ( unit ) = 31 or GetBType ( unit ) = 32 or GetBType ( unit ) = 36 or GetBType ( unit ) = 0 or GetBType ( unit ) = 24 or GetBType ( unit ) = 17 or GetBType ( unit ) = 25 or GetBType ( unit ) = 19 or GetBType ( unit ) = 20 or GetBType ( unit ) = 18 or GetBType ( unit ) = 21 or GetBType ( unit ) = 23 or GetBType ( unit ) = 16 or GetBType ( unit ) = 6 or GetBType ( unit ) = 29 or GetBType ( unit ) = 26 or GetBType ( unit ) = 30 or GetBType ( unit ) = 28 or GetBType ( unit ) = 27 or GetBType ( unit ) = 33 or GetBType ( unit ) = 2 or GetBType ( unit ) = 4 then
 894: LD_VAR 0 1
 898: PPUSH
 899: CALL_OW 266
 903: PUSH
 904: LD_INT 31
 906: EQUAL
 907: PUSH
 908: LD_VAR 0 1
 912: PPUSH
 913: CALL_OW 266
 917: PUSH
 918: LD_INT 32
 920: EQUAL
 921: OR
 922: PUSH
 923: LD_VAR 0 1
 927: PPUSH
 928: CALL_OW 266
 932: PUSH
 933: LD_INT 36
 935: EQUAL
 936: OR
 937: PUSH
 938: LD_VAR 0 1
 942: PPUSH
 943: CALL_OW 266
 947: PUSH
 948: LD_INT 0
 950: EQUAL
 951: OR
 952: PUSH
 953: LD_VAR 0 1
 957: PPUSH
 958: CALL_OW 266
 962: PUSH
 963: LD_INT 24
 965: EQUAL
 966: OR
 967: PUSH
 968: LD_VAR 0 1
 972: PPUSH
 973: CALL_OW 266
 977: PUSH
 978: LD_INT 17
 980: EQUAL
 981: OR
 982: PUSH
 983: LD_VAR 0 1
 987: PPUSH
 988: CALL_OW 266
 992: PUSH
 993: LD_INT 25
 995: EQUAL
 996: OR
 997: PUSH
 998: LD_VAR 0 1
1002: PPUSH
1003: CALL_OW 266
1007: PUSH
1008: LD_INT 19
1010: EQUAL
1011: OR
1012: PUSH
1013: LD_VAR 0 1
1017: PPUSH
1018: CALL_OW 266
1022: PUSH
1023: LD_INT 20
1025: EQUAL
1026: OR
1027: PUSH
1028: LD_VAR 0 1
1032: PPUSH
1033: CALL_OW 266
1037: PUSH
1038: LD_INT 18
1040: EQUAL
1041: OR
1042: PUSH
1043: LD_VAR 0 1
1047: PPUSH
1048: CALL_OW 266
1052: PUSH
1053: LD_INT 21
1055: EQUAL
1056: OR
1057: PUSH
1058: LD_VAR 0 1
1062: PPUSH
1063: CALL_OW 266
1067: PUSH
1068: LD_INT 23
1070: EQUAL
1071: OR
1072: PUSH
1073: LD_VAR 0 1
1077: PPUSH
1078: CALL_OW 266
1082: PUSH
1083: LD_INT 16
1085: EQUAL
1086: OR
1087: PUSH
1088: LD_VAR 0 1
1092: PPUSH
1093: CALL_OW 266
1097: PUSH
1098: LD_INT 6
1100: EQUAL
1101: OR
1102: PUSH
1103: LD_VAR 0 1
1107: PPUSH
1108: CALL_OW 266
1112: PUSH
1113: LD_INT 29
1115: EQUAL
1116: OR
1117: PUSH
1118: LD_VAR 0 1
1122: PPUSH
1123: CALL_OW 266
1127: PUSH
1128: LD_INT 26
1130: EQUAL
1131: OR
1132: PUSH
1133: LD_VAR 0 1
1137: PPUSH
1138: CALL_OW 266
1142: PUSH
1143: LD_INT 30
1145: EQUAL
1146: OR
1147: PUSH
1148: LD_VAR 0 1
1152: PPUSH
1153: CALL_OW 266
1157: PUSH
1158: LD_INT 28
1160: EQUAL
1161: OR
1162: PUSH
1163: LD_VAR 0 1
1167: PPUSH
1168: CALL_OW 266
1172: PUSH
1173: LD_INT 27
1175: EQUAL
1176: OR
1177: PUSH
1178: LD_VAR 0 1
1182: PPUSH
1183: CALL_OW 266
1187: PUSH
1188: LD_INT 33
1190: EQUAL
1191: OR
1192: PUSH
1193: LD_VAR 0 1
1197: PPUSH
1198: CALL_OW 266
1202: PUSH
1203: LD_INT 2
1205: EQUAL
1206: OR
1207: PUSH
1208: LD_VAR 0 1
1212: PPUSH
1213: CALL_OW 266
1217: PUSH
1218: LD_INT 4
1220: EQUAL
1221: OR
1222: IFFALSE 1308
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ GetBType ( unit ) ;
1224: LD_ADDR_EXP 40
1228: PUSH
1229: LD_EXP 40
1233: PUSH
1234: LD_VAR 0 1
1238: PPUSH
1239: CALL_OW 266
1243: ADD
1244: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
1245: LD_ADDR_EXP 40
1249: PUSH
1250: LD_EXP 40
1254: PUSH
1255: LD_VAR 0 1
1259: PPUSH
1260: CALL_OW 250
1264: ADD
1265: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
1266: LD_ADDR_EXP 40
1270: PUSH
1271: LD_EXP 40
1275: PUSH
1276: LD_VAR 0 1
1280: PPUSH
1281: CALL_OW 251
1285: ADD
1286: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
1287: LD_ADDR_EXP 40
1291: PUSH
1292: LD_EXP 40
1296: PUSH
1297: LD_VAR 0 1
1301: PPUSH
1302: CALL_OW 254
1306: ADD
1307: ST_TO_ADDR
// end ; if GetBType ( unit ) = 1 then
1308: LD_VAR 0 1
1312: PPUSH
1313: CALL_OW 266
1317: PUSH
1318: LD_INT 1
1320: EQUAL
1321: IFFALSE 1400
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ 0 ;
1323: LD_ADDR_EXP 40
1327: PUSH
1328: LD_EXP 40
1332: PUSH
1333: LD_INT 0
1335: ADD
1336: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
1337: LD_ADDR_EXP 40
1341: PUSH
1342: LD_EXP 40
1346: PUSH
1347: LD_VAR 0 1
1351: PPUSH
1352: CALL_OW 250
1356: ADD
1357: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
1358: LD_ADDR_EXP 40
1362: PUSH
1363: LD_EXP 40
1367: PUSH
1368: LD_VAR 0 1
1372: PPUSH
1373: CALL_OW 251
1377: ADD
1378: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
1379: LD_ADDR_EXP 40
1383: PUSH
1384: LD_EXP 40
1388: PUSH
1389: LD_VAR 0 1
1393: PPUSH
1394: CALL_OW 254
1398: ADD
1399: ST_TO_ADDR
// end ; if GetBType ( unit ) = 3 then
1400: LD_VAR 0 1
1404: PPUSH
1405: CALL_OW 266
1409: PUSH
1410: LD_INT 3
1412: EQUAL
1413: IFFALSE 1492
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ 2 ;
1415: LD_ADDR_EXP 40
1419: PUSH
1420: LD_EXP 40
1424: PUSH
1425: LD_INT 2
1427: ADD
1428: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
1429: LD_ADDR_EXP 40
1433: PUSH
1434: LD_EXP 40
1438: PUSH
1439: LD_VAR 0 1
1443: PPUSH
1444: CALL_OW 250
1448: ADD
1449: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
1450: LD_ADDR_EXP 40
1454: PUSH
1455: LD_EXP 40
1459: PUSH
1460: LD_VAR 0 1
1464: PPUSH
1465: CALL_OW 251
1469: ADD
1470: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
1471: LD_ADDR_EXP 40
1475: PUSH
1476: LD_EXP 40
1480: PUSH
1481: LD_VAR 0 1
1485: PPUSH
1486: CALL_OW 254
1490: ADD
1491: ST_TO_ADDR
// end ; if GetBType ( unit ) = 5 then
1492: LD_VAR 0 1
1496: PPUSH
1497: CALL_OW 266
1501: PUSH
1502: LD_INT 5
1504: EQUAL
1505: IFFALSE 1584
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ 4 ;
1507: LD_ADDR_EXP 40
1511: PUSH
1512: LD_EXP 40
1516: PUSH
1517: LD_INT 4
1519: ADD
1520: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
1521: LD_ADDR_EXP 40
1525: PUSH
1526: LD_EXP 40
1530: PUSH
1531: LD_VAR 0 1
1535: PPUSH
1536: CALL_OW 250
1540: ADD
1541: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
1542: LD_ADDR_EXP 40
1546: PUSH
1547: LD_EXP 40
1551: PUSH
1552: LD_VAR 0 1
1556: PPUSH
1557: CALL_OW 251
1561: ADD
1562: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
1563: LD_ADDR_EXP 40
1567: PUSH
1568: LD_EXP 40
1572: PUSH
1573: LD_VAR 0 1
1577: PPUSH
1578: CALL_OW 254
1582: ADD
1583: ST_TO_ADDR
// end ; end ; end ;
1584: PPOPN 1
1586: END
// on BuildingComplete ( building ) do var i ;
1587: LD_INT 0
1589: PPUSH
// begin if GetSide ( building ) = randomedColors [ 1 ] then
1590: LD_VAR 0 1
1594: PPUSH
1595: CALL_OW 255
1599: PUSH
1600: LD_EXP 42
1604: PUSH
1605: LD_INT 1
1607: ARRAY
1608: EQUAL
1609: IFFALSE 1863
// begin if GetBType ( building ) = 0 or GetBType ( building ) = 2 or GetBType ( building ) = 4 then
1611: LD_VAR 0 1
1615: PPUSH
1616: CALL_OW 266
1620: PUSH
1621: LD_INT 0
1623: EQUAL
1624: PUSH
1625: LD_VAR 0 1
1629: PPUSH
1630: CALL_OW 266
1634: PUSH
1635: LD_INT 2
1637: EQUAL
1638: OR
1639: PUSH
1640: LD_VAR 0 1
1644: PPUSH
1645: CALL_OW 266
1649: PUSH
1650: LD_INT 4
1652: EQUAL
1653: OR
1654: IFFALSE 1665
// ComUpgrade ( building ) ;
1656: LD_VAR 0 1
1660: PPUSH
1661: CALL_OW 146
// if ruDestroyedBuildings > 0 then
1665: LD_EXP 40
1669: PUSH
1670: LD_INT 0
1672: GREATER
1673: IFFALSE 1747
// begin ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
1675: LD_ADDR_EXP 40
1679: PUSH
1680: LD_EXP 40
1684: PPUSH
1685: LD_INT 1
1687: PPUSH
1688: CALL_OW 3
1692: ST_TO_ADDR
// ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
1693: LD_ADDR_EXP 40
1697: PUSH
1698: LD_EXP 40
1702: PPUSH
1703: LD_INT 1
1705: PPUSH
1706: CALL_OW 3
1710: ST_TO_ADDR
// ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
1711: LD_ADDR_EXP 40
1715: PUSH
1716: LD_EXP 40
1720: PPUSH
1721: LD_INT 1
1723: PPUSH
1724: CALL_OW 3
1728: ST_TO_ADDR
// ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
1729: LD_ADDR_EXP 40
1733: PUSH
1734: LD_EXP 40
1738: PPUSH
1739: LD_INT 1
1741: PPUSH
1742: CALL_OW 3
1746: ST_TO_ADDR
// end ; if GetBType ( building ) = b_bunker then
1747: LD_VAR 0 1
1751: PPUSH
1752: CALL_OW 266
1756: PUSH
1757: LD_INT 32
1759: EQUAL
1760: IFFALSE 1805
// AddComPlaceWeapon ( building , [ 46 , 45 , 47 , 44 , 43 ] [ Rand ( 1 , 5 ) ] ) ;
1762: LD_VAR 0 1
1766: PPUSH
1767: LD_INT 46
1769: PUSH
1770: LD_INT 45
1772: PUSH
1773: LD_INT 47
1775: PUSH
1776: LD_INT 44
1778: PUSH
1779: LD_INT 43
1781: PUSH
1782: EMPTY
1783: LIST
1784: LIST
1785: LIST
1786: LIST
1787: LIST
1788: PUSH
1789: LD_INT 1
1791: PPUSH
1792: LD_INT 5
1794: PPUSH
1795: CALL_OW 12
1799: ARRAY
1800: PPUSH
1801: CALL_OW 208
// if GetBType ( building ) = b_turret then
1805: LD_VAR 0 1
1809: PPUSH
1810: CALL_OW 266
1814: PUSH
1815: LD_INT 33
1817: EQUAL
1818: IFFALSE 1863
// AddComPlaceWeapon ( building , [ 46 , 45 , 47 , 44 , 43 ] [ Rand ( 1 , 5 ) ] ) ;
1820: LD_VAR 0 1
1824: PPUSH
1825: LD_INT 46
1827: PUSH
1828: LD_INT 45
1830: PUSH
1831: LD_INT 47
1833: PUSH
1834: LD_INT 44
1836: PUSH
1837: LD_INT 43
1839: PUSH
1840: EMPTY
1841: LIST
1842: LIST
1843: LIST
1844: LIST
1845: LIST
1846: PUSH
1847: LD_INT 1
1849: PPUSH
1850: LD_INT 5
1852: PPUSH
1853: CALL_OW 12
1857: ARRAY
1858: PPUSH
1859: CALL_OW 208
// end ; end ; end_of_file
1863: PPOPN 2
1865: END
// export def_base_level , def_amount_of_people , def_skill_level , def_starting_resources , def_shipments_density , def_shared_vision , def_people_respawning , def_amount_of_apemen ; export is_depot , number_of_breastworks , number_of_people , skill_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , amount_of_apemen , amount_of_siberit , respawning_time_min , respawning_time_max , respawning_time_delay_min , respawning_time_delay_max ; export Side_Teams , Teams ; export Side_Positions , Side_Nations , Team_Game ; export Position_Sides ; export depot_def , breastworks_def , start_def , normal_oil_deposits_locations , extra_oil_deposits_locations , normal_sib_deposits_locations , extra_sib_deposits_locations , battle_flags_id ; export def_difficulty_level , difficulty_level ; export rudestroyedBuildings ; export AIDepotDest ; export randomedColors ; export sideP1 , sideP2 ; var commander ; var global_units , global_defined , soldiers_created ; var neng , nsci , nmech , nsol ; export def_Tech_Level , def_upgrade_tl , tech_level , initial_level ; function read_multiplayer_and_game_parameters ; var i ; begin
1866: LD_INT 0
1868: PPUSH
1869: PPUSH
// if Multiplayer then
1870: LD_OWVAR 4
1874: IFFALSE 1928
// begin Your_Side := mp_player_side ;
1876: LD_ADDR_OWVAR 2
1880: PUSH
1881: LD_OWVAR 7
1885: ST_TO_ADDR
// Side_Positions := mp_sides_positions ;
1886: LD_ADDR_EXP 26
1890: PUSH
1891: LD_OWVAR 17
1895: ST_TO_ADDR
// Side_Teams := mp_sides_teams ;
1896: LD_ADDR_EXP 24
1900: PUSH
1901: LD_OWVAR 15
1905: ST_TO_ADDR
// Side_Nations := mp_sides_nations ;
1906: LD_ADDR_EXP 27
1910: PUSH
1911: LD_OWVAR 16
1915: ST_TO_ADDR
// Teams := mp_teams ;
1916: LD_ADDR_EXP 25
1920: PUSH
1921: LD_OWVAR 12
1925: ST_TO_ADDR
// end else
1926: GO 2071
// begin Your_Side := 1 ;
1928: LD_ADDR_OWVAR 2
1932: PUSH
1933: LD_INT 1
1935: ST_TO_ADDR
// Side_Positions := [ 0 , 2 , 0 , 0 , 0 , 0 , 1 , 0 ] ;
1936: LD_ADDR_EXP 26
1940: PUSH
1941: LD_INT 0
1943: PUSH
1944: LD_INT 2
1946: PUSH
1947: LD_INT 0
1949: PUSH
1950: LD_INT 0
1952: PUSH
1953: LD_INT 0
1955: PUSH
1956: LD_INT 0
1958: PUSH
1959: LD_INT 1
1961: PUSH
1962: LD_INT 0
1964: PUSH
1965: EMPTY
1966: LIST
1967: LIST
1968: LIST
1969: LIST
1970: LIST
1971: LIST
1972: LIST
1973: LIST
1974: ST_TO_ADDR
// Side_Teams := [ 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
1975: LD_ADDR_EXP 24
1979: PUSH
1980: LD_INT 1
1982: PUSH
1983: LD_INT 1
1985: PUSH
1986: LD_INT 0
1988: PUSH
1989: LD_INT 0
1991: PUSH
1992: LD_INT 0
1994: PUSH
1995: LD_INT 0
1997: PUSH
1998: LD_INT 0
2000: PUSH
2001: LD_INT 0
2003: PUSH
2004: EMPTY
2005: LIST
2006: LIST
2007: LIST
2008: LIST
2009: LIST
2010: LIST
2011: LIST
2012: LIST
2013: ST_TO_ADDR
// Side_Nations := [ 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
2014: LD_ADDR_EXP 27
2018: PUSH
2019: LD_INT 1
2021: PUSH
2022: LD_INT 1
2024: PUSH
2025: LD_INT 0
2027: PUSH
2028: LD_INT 0
2030: PUSH
2031: LD_INT 0
2033: PUSH
2034: LD_INT 0
2036: PUSH
2037: LD_INT 0
2039: PUSH
2040: LD_INT 0
2042: PUSH
2043: EMPTY
2044: LIST
2045: LIST
2046: LIST
2047: LIST
2048: LIST
2049: LIST
2050: LIST
2051: LIST
2052: ST_TO_ADDR
// Teams := [ [ 1 , 2 ] ] ;
2053: LD_ADDR_EXP 25
2057: PUSH
2058: LD_INT 1
2060: PUSH
2061: LD_INT 2
2063: PUSH
2064: EMPTY
2065: LIST
2066: LIST
2067: PUSH
2068: EMPTY
2069: LIST
2070: ST_TO_ADDR
// end ; for i := 1 to 8 do
2071: LD_ADDR_VAR 0 2
2075: PUSH
2076: DOUBLE
2077: LD_INT 1
2079: DEC
2080: ST_TO_ADDR
2081: LD_INT 8
2083: PUSH
2084: FOR_TO
2085: IFFALSE 2123
// if Multiplayer_GetPlayerIsSpec ( i ) then
2087: LD_VAR 0 2
2091: PPUSH
2092: CALL_OW 530
2096: IFFALSE 2121
// Side_Positions := Replace ( Side_Positions , i , 0 ) ;
2098: LD_ADDR_EXP 26
2102: PUSH
2103: LD_EXP 26
2107: PPUSH
2108: LD_VAR 0 2
2112: PPUSH
2113: LD_INT 0
2115: PPUSH
2116: CALL_OW 1
2120: ST_TO_ADDR
2121: GO 2084
2123: POP
2124: POP
// Position_Sides := [ 0 , 0 , 0 , 0 , 0 , 0 ] ;
2125: LD_ADDR_EXP 29
2129: PUSH
2130: LD_INT 0
2132: PUSH
2133: LD_INT 0
2135: PUSH
2136: LD_INT 0
2138: PUSH
2139: LD_INT 0
2141: PUSH
2142: LD_INT 0
2144: PUSH
2145: LD_INT 0
2147: PUSH
2148: EMPTY
2149: LIST
2150: LIST
2151: LIST
2152: LIST
2153: LIST
2154: LIST
2155: ST_TO_ADDR
// for i := 1 to 8 do
2156: LD_ADDR_VAR 0 2
2160: PUSH
2161: DOUBLE
2162: LD_INT 1
2164: DEC
2165: ST_TO_ADDR
2166: LD_INT 8
2168: PUSH
2169: FOR_TO
2170: IFFALSE 2217
// if Side_Positions [ i ] then
2172: LD_EXP 26
2176: PUSH
2177: LD_VAR 0 2
2181: ARRAY
2182: IFFALSE 2215
// Position_Sides := Replace ( Position_Sides , Side_Positions [ i ] , i ) ;
2184: LD_ADDR_EXP 29
2188: PUSH
2189: LD_EXP 29
2193: PPUSH
2194: LD_EXP 26
2198: PUSH
2199: LD_VAR 0 2
2203: ARRAY
2204: PPUSH
2205: LD_VAR 0 2
2209: PPUSH
2210: CALL_OW 1
2214: ST_TO_ADDR
2215: GO 2169
2217: POP
2218: POP
// Team_Game := Side_Teams [ your_side ] ;
2219: LD_ADDR_EXP 28
2223: PUSH
2224: LD_EXP 24
2228: PUSH
2229: LD_OWVAR 2
2233: ARRAY
2234: ST_TO_ADDR
// if Multiplayer then
2235: LD_OWVAR 4
2239: IFFALSE 2360
// begin def_base_level := GetMultiplayerSetting ( 0 ) ;
2241: LD_ADDR_EXP 2
2245: PUSH
2246: LD_INT 0
2248: PPUSH
2249: CALL_OW 426
2253: ST_TO_ADDR
// def_amount_of_people := GetMultiplayerSetting ( 1 ) ;
2254: LD_ADDR_EXP 3
2258: PUSH
2259: LD_INT 1
2261: PPUSH
2262: CALL_OW 426
2266: ST_TO_ADDR
// def_skill_level := GetMultiplayerSetting ( 2 ) ;
2267: LD_ADDR_EXP 4
2271: PUSH
2272: LD_INT 2
2274: PPUSH
2275: CALL_OW 426
2279: ST_TO_ADDR
// def_starting_resources := GetMultiplayerSetting ( 3 ) ;
2280: LD_ADDR_EXP 5
2284: PUSH
2285: LD_INT 3
2287: PPUSH
2288: CALL_OW 426
2292: ST_TO_ADDR
// def_shipments_density := GetMultiplayerSetting ( 4 ) ;
2293: LD_ADDR_EXP 6
2297: PUSH
2298: LD_INT 4
2300: PPUSH
2301: CALL_OW 426
2305: ST_TO_ADDR
// def_amount_of_apemen := GetMultiplayerSetting ( 5 ) ;
2306: LD_ADDR_EXP 9
2310: PUSH
2311: LD_INT 5
2313: PPUSH
2314: CALL_OW 426
2318: ST_TO_ADDR
// def_shared_vision := GetMultiplayerSetting ( 10 ) ;
2319: LD_ADDR_EXP 7
2323: PUSH
2324: LD_INT 10
2326: PPUSH
2327: CALL_OW 426
2331: ST_TO_ADDR
// def_people_respawning := GetMultiplayerSetting ( 13 ) ;
2332: LD_ADDR_EXP 8
2336: PUSH
2337: LD_INT 13
2339: PPUSH
2340: CALL_OW 426
2344: ST_TO_ADDR
// def_difficulty_level := GetMultiplayerSetting ( 17 ) ;
2345: LD_ADDR_EXP 38
2349: PUSH
2350: LD_INT 17
2352: PPUSH
2353: CALL_OW 426
2357: ST_TO_ADDR
// end else
2358: GO 2420
// begin Randomize ;
2360: CALL_OW 10
// def_base_level = 2 ;
2364: LD_ADDR_EXP 2
2368: PUSH
2369: LD_INT 2
2371: ST_TO_ADDR
// def_amount_of_people = 3 ;
2372: LD_ADDR_EXP 3
2376: PUSH
2377: LD_INT 3
2379: ST_TO_ADDR
// def_amount_of_apemen = 3 ;
2380: LD_ADDR_EXP 9
2384: PUSH
2385: LD_INT 3
2387: ST_TO_ADDR
// def_difficulty_level = 3 ;
2388: LD_ADDR_EXP 38
2392: PUSH
2393: LD_INT 3
2395: ST_TO_ADDR
// def_shipments_density = 1 ;
2396: LD_ADDR_EXP 6
2400: PUSH
2401: LD_INT 1
2403: ST_TO_ADDR
// def_skill_level = 3 ;
2404: LD_ADDR_EXP 4
2408: PUSH
2409: LD_INT 3
2411: ST_TO_ADDR
// def_shared_vision = 1 ;
2412: LD_ADDR_EXP 7
2416: PUSH
2417: LD_INT 1
2419: ST_TO_ADDR
// end ; is_depot := [ 0 , 1 , 1 ] [ def_base_level + 1 ] ;
2420: LD_ADDR_EXP 10
2424: PUSH
2425: LD_INT 0
2427: PUSH
2428: LD_INT 1
2430: PUSH
2431: LD_INT 1
2433: PUSH
2434: EMPTY
2435: LIST
2436: LIST
2437: LIST
2438: PUSH
2439: LD_EXP 2
2443: PUSH
2444: LD_INT 1
2446: PLUS
2447: ARRAY
2448: ST_TO_ADDR
// number_of_breastworks := [ 0 , 0 , 2 ] [ def_base_level + 1 ] ;
2449: LD_ADDR_EXP 11
2453: PUSH
2454: LD_INT 0
2456: PUSH
2457: LD_INT 0
2459: PUSH
2460: LD_INT 2
2462: PUSH
2463: EMPTY
2464: LIST
2465: LIST
2466: LIST
2467: PUSH
2468: LD_EXP 2
2472: PUSH
2473: LD_INT 1
2475: PLUS
2476: ARRAY
2477: ST_TO_ADDR
// number_of_people := [ 9 , 12 , 15 , 24 ] [ def_amount_of_people + 1 ] ;
2478: LD_ADDR_EXP 12
2482: PUSH
2483: LD_INT 9
2485: PUSH
2486: LD_INT 12
2488: PUSH
2489: LD_INT 15
2491: PUSH
2492: LD_INT 24
2494: PUSH
2495: EMPTY
2496: LIST
2497: LIST
2498: LIST
2499: LIST
2500: PUSH
2501: LD_EXP 3
2505: PUSH
2506: LD_INT 1
2508: PLUS
2509: ARRAY
2510: ST_TO_ADDR
// skill_level := [ 3 , 5 , 6 , 7 ] [ def_skill_level + 1 ] ;
2511: LD_ADDR_EXP 13
2515: PUSH
2516: LD_INT 3
2518: PUSH
2519: LD_INT 5
2521: PUSH
2522: LD_INT 6
2524: PUSH
2525: LD_INT 7
2527: PUSH
2528: EMPTY
2529: LIST
2530: LIST
2531: LIST
2532: LIST
2533: PUSH
2534: LD_EXP 4
2538: PUSH
2539: LD_INT 1
2541: PLUS
2542: ARRAY
2543: ST_TO_ADDR
// starting_resources := [ [ 0 , 0 , 0 ] , [ 30 , 0 , 0 ] , [ 50 , 20 , 0 ] , [ 80 , 40 , 20 ] ] [ def_starting_resources + 1 ] ;
2544: LD_ADDR_EXP 15
2548: PUSH
2549: LD_INT 0
2551: PUSH
2552: LD_INT 0
2554: PUSH
2555: LD_INT 0
2557: PUSH
2558: EMPTY
2559: LIST
2560: LIST
2561: LIST
2562: PUSH
2563: LD_INT 30
2565: PUSH
2566: LD_INT 0
2568: PUSH
2569: LD_INT 0
2571: PUSH
2572: EMPTY
2573: LIST
2574: LIST
2575: LIST
2576: PUSH
2577: LD_INT 50
2579: PUSH
2580: LD_INT 20
2582: PUSH
2583: LD_INT 0
2585: PUSH
2586: EMPTY
2587: LIST
2588: LIST
2589: LIST
2590: PUSH
2591: LD_INT 80
2593: PUSH
2594: LD_INT 40
2596: PUSH
2597: LD_INT 20
2599: PUSH
2600: EMPTY
2601: LIST
2602: LIST
2603: LIST
2604: PUSH
2605: EMPTY
2606: LIST
2607: LIST
2608: LIST
2609: LIST
2610: PUSH
2611: LD_EXP 5
2615: PUSH
2616: LD_INT 1
2618: PLUS
2619: ARRAY
2620: ST_TO_ADDR
// starting_crates := [ [ 10 ] , [ 7 , 14 ] , [ 6 , 12 , 18 ] , [ 5 , 10 , 15 , 20 ] ] [ def_starting_resources + 1 ] ;
2621: LD_ADDR_EXP 14
2625: PUSH
2626: LD_INT 10
2628: PUSH
2629: EMPTY
2630: LIST
2631: PUSH
2632: LD_INT 7
2634: PUSH
2635: LD_INT 14
2637: PUSH
2638: EMPTY
2639: LIST
2640: LIST
2641: PUSH
2642: LD_INT 6
2644: PUSH
2645: LD_INT 12
2647: PUSH
2648: LD_INT 18
2650: PUSH
2651: EMPTY
2652: LIST
2653: LIST
2654: LIST
2655: PUSH
2656: LD_INT 5
2658: PUSH
2659: LD_INT 10
2661: PUSH
2662: LD_INT 15
2664: PUSH
2665: LD_INT 20
2667: PUSH
2668: EMPTY
2669: LIST
2670: LIST
2671: LIST
2672: LIST
2673: PUSH
2674: EMPTY
2675: LIST
2676: LIST
2677: LIST
2678: LIST
2679: PUSH
2680: LD_EXP 5
2684: PUSH
2685: LD_INT 1
2687: PLUS
2688: ARRAY
2689: ST_TO_ADDR
// shipments_density := [ 150 , 125 , 100 , 50 ] [ def_shipments_density + 1 ] ;
2690: LD_ADDR_EXP 16
2694: PUSH
2695: LD_INT 150
2697: PUSH
2698: LD_INT 125
2700: PUSH
2701: LD_INT 100
2703: PUSH
2704: LD_INT 50
2706: PUSH
2707: EMPTY
2708: LIST
2709: LIST
2710: LIST
2711: LIST
2712: PUSH
2713: LD_EXP 6
2717: PUSH
2718: LD_INT 1
2720: PLUS
2721: ARRAY
2722: ST_TO_ADDR
// respawning_time_min := [ 0 0$0 , 4 4$00 , 2 2$0 ] [ def_people_respawning + 1 ] ;
2723: LD_ADDR_EXP 20
2727: PUSH
2728: LD_INT 0
2730: PUSH
2731: LD_INT 8400
2733: PUSH
2734: LD_INT 4200
2736: PUSH
2737: EMPTY
2738: LIST
2739: LIST
2740: LIST
2741: PUSH
2742: LD_EXP 8
2746: PUSH
2747: LD_INT 1
2749: PLUS
2750: ARRAY
2751: ST_TO_ADDR
// respawning_time_max := [ 0 0$0 , 9 9$00 , 5 5$0 ] [ def_people_respawning + 1 ] ;
2752: LD_ADDR_EXP 21
2756: PUSH
2757: LD_INT 0
2759: PUSH
2760: LD_INT 18900
2762: PUSH
2763: LD_INT 10500
2765: PUSH
2766: EMPTY
2767: LIST
2768: LIST
2769: LIST
2770: PUSH
2771: LD_EXP 8
2775: PUSH
2776: LD_INT 1
2778: PLUS
2779: ARRAY
2780: ST_TO_ADDR
// respawning_time_delay_min := [ 0 0$0 , 0 0$30 , 0 0$20 ] [ def_people_respawning + 1 ] ;
2781: LD_ADDR_EXP 22
2785: PUSH
2786: LD_INT 0
2788: PUSH
2789: LD_INT 1050
2791: PUSH
2792: LD_INT 700
2794: PUSH
2795: EMPTY
2796: LIST
2797: LIST
2798: LIST
2799: PUSH
2800: LD_EXP 8
2804: PUSH
2805: LD_INT 1
2807: PLUS
2808: ARRAY
2809: ST_TO_ADDR
// respawning_time_delay_max := [ 0 0$0 , 1 1$00 , 0 0$40 ] [ def_people_respawning + 1 ] ;
2810: LD_ADDR_EXP 23
2814: PUSH
2815: LD_INT 0
2817: PUSH
2818: LD_INT 2100
2820: PUSH
2821: LD_INT 1400
2823: PUSH
2824: EMPTY
2825: LIST
2826: LIST
2827: LIST
2828: PUSH
2829: LD_EXP 8
2833: PUSH
2834: LD_INT 1
2836: PLUS
2837: ARRAY
2838: ST_TO_ADDR
// amount_of_apemen := [ 0 , 3 , 6 , 9 ] [ def_amount_of_apemen + 1 ] ;
2839: LD_ADDR_EXP 18
2843: PUSH
2844: LD_INT 0
2846: PUSH
2847: LD_INT 3
2849: PUSH
2850: LD_INT 6
2852: PUSH
2853: LD_INT 9
2855: PUSH
2856: EMPTY
2857: LIST
2858: LIST
2859: LIST
2860: LIST
2861: PUSH
2862: LD_EXP 9
2866: PUSH
2867: LD_INT 1
2869: PLUS
2870: ARRAY
2871: ST_TO_ADDR
// difficulty_level := [ 5 , 7 , 8 , 10 ] [ def_difficulty_level + 1 ] ;
2872: LD_ADDR_EXP 39
2876: PUSH
2877: LD_INT 5
2879: PUSH
2880: LD_INT 7
2882: PUSH
2883: LD_INT 8
2885: PUSH
2886: LD_INT 10
2888: PUSH
2889: EMPTY
2890: LIST
2891: LIST
2892: LIST
2893: LIST
2894: PUSH
2895: LD_EXP 38
2899: PUSH
2900: LD_INT 1
2902: PLUS
2903: ARRAY
2904: ST_TO_ADDR
// end ;
2905: LD_VAR 0 1
2909: RET
// function init_map ; var i , j ; begin
2910: LD_INT 0
2912: PPUSH
2913: PPUSH
2914: PPUSH
// normal_oil_deposits_locations := [ [ 71 , 117 ] , [ 70 , 129 ] ] ;
2915: LD_ADDR_EXP 33
2919: PUSH
2920: LD_INT 71
2922: PUSH
2923: LD_INT 117
2925: PUSH
2926: EMPTY
2927: LIST
2928: LIST
2929: PUSH
2930: LD_INT 70
2932: PUSH
2933: LD_INT 129
2935: PUSH
2936: EMPTY
2937: LIST
2938: LIST
2939: PUSH
2940: EMPTY
2941: LIST
2942: LIST
2943: ST_TO_ADDR
// normal_sib_deposits_locations := [ [ 75 , 121 ] , [ 73 , 130 ] ] ;
2944: LD_ADDR_EXP 35
2948: PUSH
2949: LD_INT 75
2951: PUSH
2952: LD_INT 121
2954: PUSH
2955: EMPTY
2956: LIST
2957: LIST
2958: PUSH
2959: LD_INT 73
2961: PUSH
2962: LD_INT 130
2964: PUSH
2965: EMPTY
2966: LIST
2967: LIST
2968: PUSH
2969: EMPTY
2970: LIST
2971: LIST
2972: ST_TO_ADDR
// depot_def := [ [ 55 , 100 , 0 ] , [ 80 , 116 , 2 ] ] ;
2973: LD_ADDR_EXP 30
2977: PUSH
2978: LD_INT 55
2980: PUSH
2981: LD_INT 100
2983: PUSH
2984: LD_INT 0
2986: PUSH
2987: EMPTY
2988: LIST
2989: LIST
2990: LIST
2991: PUSH
2992: LD_INT 80
2994: PUSH
2995: LD_INT 116
2997: PUSH
2998: LD_INT 2
3000: PUSH
3001: EMPTY
3002: LIST
3003: LIST
3004: LIST
3005: PUSH
3006: EMPTY
3007: LIST
3008: LIST
3009: ST_TO_ADDR
// for i in depot_def do
3010: LD_ADDR_VAR 0 2
3014: PUSH
3015: LD_EXP 30
3019: PUSH
3020: FOR_IN
3021: IFFALSE 3095
// start_def := start_def ^ [ [ ShiftX ( i [ 1 ] , i [ 3 ] , 10 ) , ShiftY ( i [ 2 ] , i [ 3 ] , 10 ) ] ] ;
3023: LD_ADDR_EXP 32
3027: PUSH
3028: LD_EXP 32
3032: PUSH
3033: LD_VAR 0 2
3037: PUSH
3038: LD_INT 1
3040: ARRAY
3041: PPUSH
3042: LD_VAR 0 2
3046: PUSH
3047: LD_INT 3
3049: ARRAY
3050: PPUSH
3051: LD_INT 10
3053: PPUSH
3054: CALL_OW 272
3058: PUSH
3059: LD_VAR 0 2
3063: PUSH
3064: LD_INT 2
3066: ARRAY
3067: PPUSH
3068: LD_VAR 0 2
3072: PUSH
3073: LD_INT 3
3075: ARRAY
3076: PPUSH
3077: LD_INT 10
3079: PPUSH
3080: CALL_OW 273
3084: PUSH
3085: EMPTY
3086: LIST
3087: LIST
3088: PUSH
3089: EMPTY
3090: LIST
3091: ADD
3092: ST_TO_ADDR
3093: GO 3020
3095: POP
3096: POP
// breastworks_def := [ [ [ 68 , 92 , 4 ] , [ 70 , 95 , 4 ] ] , [ [ 91 , 105 , 3 ] , [ 97 , 103 , 4 ] ] ] ;
3097: LD_ADDR_EXP 31
3101: PUSH
3102: LD_INT 68
3104: PUSH
3105: LD_INT 92
3107: PUSH
3108: LD_INT 4
3110: PUSH
3111: EMPTY
3112: LIST
3113: LIST
3114: LIST
3115: PUSH
3116: LD_INT 70
3118: PUSH
3119: LD_INT 95
3121: PUSH
3122: LD_INT 4
3124: PUSH
3125: EMPTY
3126: LIST
3127: LIST
3128: LIST
3129: PUSH
3130: EMPTY
3131: LIST
3132: LIST
3133: PUSH
3134: LD_INT 91
3136: PUSH
3137: LD_INT 105
3139: PUSH
3140: LD_INT 3
3142: PUSH
3143: EMPTY
3144: LIST
3145: LIST
3146: LIST
3147: PUSH
3148: LD_INT 97
3150: PUSH
3151: LD_INT 103
3153: PUSH
3154: LD_INT 4
3156: PUSH
3157: EMPTY
3158: LIST
3159: LIST
3160: LIST
3161: PUSH
3162: EMPTY
3163: LIST
3164: LIST
3165: PUSH
3166: EMPTY
3167: LIST
3168: LIST
3169: ST_TO_ADDR
// for i = 1 to 2 do
3170: LD_ADDR_VAR 0 2
3174: PUSH
3175: DOUBLE
3176: LD_INT 1
3178: DEC
3179: ST_TO_ADDR
3180: LD_INT 2
3182: PUSH
3183: FOR_TO
3184: IFFALSE 3225
// CreateDepositXY ( normal_oil_deposits_locations [ i ] [ 1 ] , normal_oil_deposits_locations [ i ] [ 2 ] , mat_oil ) ;
3186: LD_EXP 33
3190: PUSH
3191: LD_VAR 0 2
3195: ARRAY
3196: PUSH
3197: LD_INT 1
3199: ARRAY
3200: PPUSH
3201: LD_EXP 33
3205: PUSH
3206: LD_VAR 0 2
3210: ARRAY
3211: PUSH
3212: LD_INT 2
3214: ARRAY
3215: PPUSH
3216: LD_INT 2
3218: PPUSH
3219: CALL_OW 62
3223: GO 3183
3225: POP
3226: POP
// for i = 1 to 2 do
3227: LD_ADDR_VAR 0 2
3231: PUSH
3232: DOUBLE
3233: LD_INT 1
3235: DEC
3236: ST_TO_ADDR
3237: LD_INT 2
3239: PUSH
3240: FOR_TO
3241: IFFALSE 3282
// CreateDepositXY ( normal_sib_deposits_locations [ i ] [ 1 ] , normal_sib_deposits_locations [ i ] [ 2 ] , mat_siberit ) ;
3243: LD_EXP 35
3247: PUSH
3248: LD_VAR 0 2
3252: ARRAY
3253: PUSH
3254: LD_INT 1
3256: ARRAY
3257: PPUSH
3258: LD_EXP 35
3262: PUSH
3263: LD_VAR 0 2
3267: ARRAY
3268: PUSH
3269: LD_INT 2
3271: ARRAY
3272: PPUSH
3273: LD_INT 3
3275: PPUSH
3276: CALL_OW 62
3280: GO 3240
3282: POP
3283: POP
// end ;
3284: LD_VAR 0 1
3288: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
3289: LD_INT 0
3291: PPUSH
3292: PPUSH
3293: PPUSH
// if not Team_Game then
3294: LD_EXP 28
3298: NOT
3299: IFFALSE 3397
// begin for i = 1 to 8 do
3301: LD_ADDR_VAR 0 2
3305: PUSH
3306: DOUBLE
3307: LD_INT 1
3309: DEC
3310: ST_TO_ADDR
3311: LD_INT 8
3313: PUSH
3314: FOR_TO
3315: IFFALSE 3393
// for j = 1 to 8 do
3317: LD_ADDR_VAR 0 3
3321: PUSH
3322: DOUBLE
3323: LD_INT 1
3325: DEC
3326: ST_TO_ADDR
3327: LD_INT 8
3329: PUSH
3330: FOR_TO
3331: IFFALSE 3389
// if i <> j then
3333: LD_VAR 0 2
3337: PUSH
3338: LD_VAR 0 3
3342: NONEQUAL
3343: IFFALSE 3367
// SetAttitude ( i , j , att_neutral , true ) else
3345: LD_VAR 0 2
3349: PPUSH
3350: LD_VAR 0 3
3354: PPUSH
3355: LD_INT 0
3357: PPUSH
3358: LD_INT 1
3360: PPUSH
3361: CALL_OW 80
3365: GO 3387
// SetAttitude ( i , j , att_friend , true ) ;
3367: LD_VAR 0 2
3371: PPUSH
3372: LD_VAR 0 3
3376: PPUSH
3377: LD_INT 1
3379: PPUSH
3380: LD_INT 1
3382: PPUSH
3383: CALL_OW 80
3387: GO 3330
3389: POP
3390: POP
3391: GO 3314
3393: POP
3394: POP
// end else
3395: GO 3572
// begin if def_shared_vision then
3397: LD_EXP 7
3401: IFFALSE 3466
// begin for i in Teams do
3403: LD_ADDR_VAR 0 2
3407: PUSH
3408: LD_EXP 25
3412: PUSH
3413: FOR_IN
3414: IFFALSE 3464
// for j = 2 to i do
3416: LD_ADDR_VAR 0 3
3420: PUSH
3421: DOUBLE
3422: LD_INT 2
3424: DEC
3425: ST_TO_ADDR
3426: LD_VAR 0 2
3430: PUSH
3431: FOR_TO
3432: IFFALSE 3460
// ChangeSideFog ( i [ j ] , i [ 1 ] ) ;
3434: LD_VAR 0 2
3438: PUSH
3439: LD_VAR 0 3
3443: ARRAY
3444: PPUSH
3445: LD_VAR 0 2
3449: PUSH
3450: LD_INT 1
3452: ARRAY
3453: PPUSH
3454: CALL_OW 343
3458: GO 3431
3460: POP
3461: POP
3462: GO 3413
3464: POP
3465: POP
// end ; for i = 1 to 8 do
3466: LD_ADDR_VAR 0 2
3470: PUSH
3471: DOUBLE
3472: LD_INT 1
3474: DEC
3475: ST_TO_ADDR
3476: LD_INT 8
3478: PUSH
3479: FOR_TO
3480: IFFALSE 3570
// for j = 1 to 8 do
3482: LD_ADDR_VAR 0 3
3486: PUSH
3487: DOUBLE
3488: LD_INT 1
3490: DEC
3491: ST_TO_ADDR
3492: LD_INT 8
3494: PUSH
3495: FOR_TO
3496: IFFALSE 3566
// if Side_Teams [ i ] = Side_Teams [ j ] then
3498: LD_EXP 24
3502: PUSH
3503: LD_VAR 0 2
3507: ARRAY
3508: PUSH
3509: LD_EXP 24
3513: PUSH
3514: LD_VAR 0 3
3518: ARRAY
3519: EQUAL
3520: IFFALSE 3544
// SetAttitude ( i , j , att_friend , true ) else
3522: LD_VAR 0 2
3526: PPUSH
3527: LD_VAR 0 3
3531: PPUSH
3532: LD_INT 1
3534: PPUSH
3535: LD_INT 1
3537: PPUSH
3538: CALL_OW 80
3542: GO 3564
// SetAttitude ( i , j , att_enemy , true ) ;
3544: LD_VAR 0 2
3548: PPUSH
3549: LD_VAR 0 3
3553: PPUSH
3554: LD_INT 2
3556: PPUSH
3557: LD_INT 1
3559: PPUSH
3560: CALL_OW 80
3564: GO 3495
3566: POP
3567: POP
3568: GO 3479
3570: POP
3571: POP
// end ; end ;
3572: LD_VAR 0 1
3576: RET
// function prepare_people ( count , cl , x , y , r ) ; var i , j , un ; begin
3577: LD_INT 0
3579: PPUSH
3580: PPUSH
3581: PPUSH
3582: PPUSH
// result := [ ] ;
3583: LD_ADDR_VAR 0 6
3587: PUSH
3588: EMPTY
3589: ST_TO_ADDR
// for i := 1 to count do
3590: LD_ADDR_VAR 0 7
3594: PUSH
3595: DOUBLE
3596: LD_INT 1
3598: DEC
3599: ST_TO_ADDR
3600: LD_VAR 0 1
3604: PUSH
3605: FOR_TO
3606: IFFALSE 4002
// begin uc_direction := Rand ( 0 , 5 ) ;
3608: LD_ADDR_OWVAR 24
3612: PUSH
3613: LD_INT 0
3615: PPUSH
3616: LD_INT 5
3618: PPUSH
3619: CALL_OW 12
3623: ST_TO_ADDR
// if commander then
3624: LD_LOC 1
3628: IFFALSE 3737
// begin hc_name := mp_sides_players_names [ uc_side ] ;
3630: LD_ADDR_OWVAR 26
3634: PUSH
3635: LD_OWVAR 19
3639: PUSH
3640: LD_OWVAR 20
3644: ARRAY
3645: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , skill_level + 2 ) ;
3646: LD_INT 1
3648: PPUSH
3649: LD_INT 2
3651: PPUSH
3652: CALL_OW 12
3656: PPUSH
3657: LD_VAR 0 2
3661: PPUSH
3662: LD_EXP 13
3666: PUSH
3667: LD_INT 2
3669: PLUS
3670: PPUSH
3671: CALL_OW 380
// hc_importance := 105 ;
3675: LD_ADDR_OWVAR 32
3679: PUSH
3680: LD_INT 105
3682: ST_TO_ADDR
// commander := false ;
3683: LD_ADDR_LOC 1
3687: PUSH
3688: LD_INT 0
3690: ST_TO_ADDR
// if Multiplayer then
3691: LD_OWVAR 4
3695: IFFALSE 3735
// begin hc_gallery := MULTIAVATARS ;
3697: LD_ADDR_OWVAR 33
3701: PUSH
3702: LD_STRING MULTIAVATARS
3704: ST_TO_ADDR
// hc_face_number := Multiplayer_GetPlayerSideNum ( uc_side ) ;
3705: LD_ADDR_OWVAR 34
3709: PUSH
3710: LD_OWVAR 20
3714: PPUSH
3715: CALL_OW 525
3719: ST_TO_ADDR
// hc_sex := Multiplayer_GetPlayerSex ( uc_side ) ;
3720: LD_ADDR_OWVAR 27
3724: PUSH
3725: LD_OWVAR 20
3729: PPUSH
3730: CALL_OW 526
3734: ST_TO_ADDR
// end ; end else
3735: GO 3800
// begin hc_name :=  ;
3737: LD_ADDR_OWVAR 26
3741: PUSH
3742: LD_STRING 
3744: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , skill_level ) ;
3745: LD_INT 1
3747: PPUSH
3748: LD_INT 2
3750: PPUSH
3751: CALL_OW 12
3755: PPUSH
3756: LD_VAR 0 2
3760: PPUSH
3761: LD_EXP 13
3765: PPUSH
3766: CALL_OW 380
// hc_importance := 0 ;
3770: LD_ADDR_OWVAR 32
3774: PUSH
3775: LD_INT 0
3777: ST_TO_ADDR
// if Multiplayer then
3778: LD_OWVAR 4
3782: IFFALSE 3800
// begin hc_gallery :=  ;
3784: LD_ADDR_OWVAR 33
3788: PUSH
3789: LD_STRING 
3791: ST_TO_ADDR
// hc_face_number := 0 ;
3792: LD_ADDR_OWVAR 34
3796: PUSH
3797: LD_INT 0
3799: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
3800: LD_ADDR_VAR 0 9
3804: PUSH
3805: CALL_OW 44
3809: ST_TO_ADDR
// if global_defined then
3810: LD_LOC 3
3814: IFFALSE 3954
// begin if ( cl = class_soldier ) then
3816: LD_VAR 0 2
3820: PUSH
3821: LD_INT 1
3823: EQUAL
3824: IFFALSE 3844
// j := i + soldiers_created else
3826: LD_ADDR_VAR 0 8
3830: PUSH
3831: LD_VAR 0 7
3835: PUSH
3836: LD_LOC 4
3840: PLUS
3841: ST_TO_ADDR
3842: GO 3854
// j := i ;
3844: LD_ADDR_VAR 0 8
3848: PUSH
3849: LD_VAR 0 7
3853: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
3854: LD_LOC 2
3858: PUSH
3859: LD_VAR 0 2
3863: ARRAY
3864: PUSH
3865: LD_VAR 0 8
3869: ARRAY
3870: PPUSH
3871: LD_VAR 0 9
3875: PPUSH
3876: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
3880: LD_VAR 0 9
3884: PPUSH
3885: LD_INT 2
3887: PPUSH
3888: LD_LOC 2
3892: PUSH
3893: LD_VAR 0 2
3897: ARRAY
3898: PUSH
3899: LD_VAR 0 8
3903: ARRAY
3904: PPUSH
3905: LD_INT 2
3907: PPUSH
3908: CALL_OW 260
3912: PPUSH
3913: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
3917: LD_VAR 0 9
3921: PPUSH
3922: LD_INT 1
3924: PPUSH
3925: LD_LOC 2
3929: PUSH
3930: LD_VAR 0 2
3934: ARRAY
3935: PUSH
3936: LD_VAR 0 8
3940: ARRAY
3941: PPUSH
3942: LD_INT 1
3944: PPUSH
3945: CALL_OW 260
3949: PPUSH
3950: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
3954: LD_VAR 0 9
3958: PPUSH
3959: LD_VAR 0 3
3963: PPUSH
3964: LD_VAR 0 4
3968: PPUSH
3969: LD_VAR 0 5
3973: PPUSH
3974: LD_INT 0
3976: PPUSH
3977: CALL_OW 50
// result := result ^ [ un ] ;
3981: LD_ADDR_VAR 0 6
3985: PUSH
3986: LD_VAR 0 6
3990: PUSH
3991: LD_VAR 0 9
3995: PUSH
3996: EMPTY
3997: LIST
3998: ADD
3999: ST_TO_ADDR
// end ;
4000: GO 3605
4002: POP
4003: POP
// if not global_defined then
4004: LD_LOC 3
4008: NOT
4009: IFFALSE 4087
// if ( global_units >= cl ) then
4011: LD_LOC 2
4015: PUSH
4016: LD_VAR 0 2
4020: GREATEREQUAL
4021: IFFALSE 4062
// global_units := Replace ( global_units , cl , global_units [ cl ] ^ result ) else
4023: LD_ADDR_LOC 2
4027: PUSH
4028: LD_LOC 2
4032: PPUSH
4033: LD_VAR 0 2
4037: PPUSH
4038: LD_LOC 2
4042: PUSH
4043: LD_VAR 0 2
4047: ARRAY
4048: PUSH
4049: LD_VAR 0 6
4053: ADD
4054: PPUSH
4055: CALL_OW 1
4059: ST_TO_ADDR
4060: GO 4087
// global_units := Replace ( global_units , cl , result ) ;
4062: LD_ADDR_LOC 2
4066: PUSH
4067: LD_LOC 2
4071: PPUSH
4072: LD_VAR 0 2
4076: PPUSH
4077: LD_VAR 0 6
4081: PPUSH
4082: CALL_OW 1
4086: ST_TO_ADDR
// end ;
4087: LD_VAR 0 6
4091: RET
// function prepare_side ( side ) ; var pos , x , y , dir , i , r , sol , br , dep ; begin
4092: LD_INT 0
4094: PPUSH
4095: PPUSH
4096: PPUSH
4097: PPUSH
4098: PPUSH
4099: PPUSH
4100: PPUSH
4101: PPUSH
4102: PPUSH
4103: PPUSH
// pos := Side_Positions [ side ] ;
4104: LD_ADDR_VAR 0 3
4108: PUSH
4109: LD_EXP 26
4113: PUSH
4114: LD_VAR 0 1
4118: ARRAY
4119: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
4120: LD_ADDR_OWVAR 21
4124: PUSH
4125: LD_EXP 27
4129: PUSH
4130: LD_VAR 0 1
4134: ARRAY
4135: ST_TO_ADDR
// uc_side := side ;
4136: LD_ADDR_OWVAR 20
4140: PUSH
4141: LD_VAR 0 1
4145: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
4146: LD_ADDR_VAR 0 4
4150: PUSH
4151: LD_EXP 30
4155: PUSH
4156: LD_VAR 0 3
4160: ARRAY
4161: PUSH
4162: LD_INT 1
4164: ARRAY
4165: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
4166: LD_ADDR_VAR 0 5
4170: PUSH
4171: LD_EXP 30
4175: PUSH
4176: LD_VAR 0 3
4180: ARRAY
4181: PUSH
4182: LD_INT 2
4184: ARRAY
4185: ST_TO_ADDR
// dir := depot_def [ pos ] [ 3 ] ;
4186: LD_ADDR_VAR 0 6
4190: PUSH
4191: LD_EXP 30
4195: PUSH
4196: LD_VAR 0 3
4200: ARRAY
4201: PUSH
4202: LD_INT 3
4204: ARRAY
4205: ST_TO_ADDR
// if is_depot then
4206: LD_EXP 10
4210: IFFALSE 4343
// begin bc_type = b_depot ;
4212: LD_ADDR_OWVAR 42
4216: PUSH
4217: LD_INT 0
4219: ST_TO_ADDR
// dep := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
4220: LD_ADDR_VAR 0 11
4224: PUSH
4225: LD_VAR 0 4
4229: PPUSH
4230: LD_VAR 0 5
4234: PPUSH
4235: LD_VAR 0 6
4239: PPUSH
4240: CALL_OW 47
4244: ST_TO_ADDR
// SetBName ( dep , @ & side ) ;
4245: LD_VAR 0 11
4249: PPUSH
4250: LD_STRING @
4252: PUSH
4253: LD_VAR 0 1
4257: STR
4258: PPUSH
4259: CALL_OW 500
// SetResourceType ( GetBase ( dep ) , mat_cans , starting_resources [ mat_cans ] ) ;
4263: LD_VAR 0 11
4267: PPUSH
4268: CALL_OW 274
4272: PPUSH
4273: LD_INT 1
4275: PPUSH
4276: LD_EXP 15
4280: PUSH
4281: LD_INT 1
4283: ARRAY
4284: PPUSH
4285: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_oil , starting_resources [ mat_oil ] ) ;
4289: LD_VAR 0 11
4293: PPUSH
4294: CALL_OW 274
4298: PPUSH
4299: LD_INT 2
4301: PPUSH
4302: LD_EXP 15
4306: PUSH
4307: LD_INT 2
4309: ARRAY
4310: PPUSH
4311: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_siberit , starting_resources [ mat_siberit ] ) ;
4315: LD_VAR 0 11
4319: PPUSH
4320: CALL_OW 274
4324: PPUSH
4325: LD_INT 3
4327: PPUSH
4328: LD_EXP 15
4332: PUSH
4333: LD_INT 3
4335: ARRAY
4336: PPUSH
4337: CALL_OW 277
// end else
4341: GO 4487
// begin for i := 1 to 3 do
4343: LD_ADDR_VAR 0 7
4347: PUSH
4348: DOUBLE
4349: LD_INT 1
4351: DEC
4352: ST_TO_ADDR
4353: LD_INT 3
4355: PUSH
4356: FOR_TO
4357: IFFALSE 4485
// begin r := starting_resources [ i ] ;
4359: LD_ADDR_VAR 0 8
4363: PUSH
4364: LD_EXP 15
4368: PUSH
4369: LD_VAR 0 7
4373: ARRAY
4374: ST_TO_ADDR
// while r >= 10 do
4375: LD_VAR 0 8
4379: PUSH
4380: LD_INT 10
4382: GREATEREQUAL
4383: IFFALSE 4483
// if r > 50 then
4385: LD_VAR 0 8
4389: PUSH
4390: LD_INT 50
4392: GREATER
4393: IFFALSE 4439
// begin CreateResourcesXYR ( i , 5 , x , y , 4 , false ) ;
4395: LD_VAR 0 7
4399: PPUSH
4400: LD_INT 5
4402: PPUSH
4403: LD_VAR 0 4
4407: PPUSH
4408: LD_VAR 0 5
4412: PPUSH
4413: LD_INT 4
4415: PPUSH
4416: LD_INT 0
4418: PPUSH
4419: CALL_OW 60
// r := r - 50 ;
4423: LD_ADDR_VAR 0 8
4427: PUSH
4428: LD_VAR 0 8
4432: PUSH
4433: LD_INT 50
4435: MINUS
4436: ST_TO_ADDR
// end else
4437: GO 4481
// begin CreateResourcesXYR ( i , r div 10 , x , y , 4 , false ) ;
4439: LD_VAR 0 7
4443: PPUSH
4444: LD_VAR 0 8
4448: PUSH
4449: LD_INT 10
4451: DIV
4452: PPUSH
4453: LD_VAR 0 4
4457: PPUSH
4458: LD_VAR 0 5
4462: PPUSH
4463: LD_INT 4
4465: PPUSH
4466: LD_INT 0
4468: PPUSH
4469: CALL_OW 60
// r := 0 ;
4473: LD_ADDR_VAR 0 8
4477: PUSH
4478: LD_INT 0
4480: ST_TO_ADDR
// end ;
4481: GO 4375
// end ;
4483: GO 4356
4485: POP
4486: POP
// end ; for r in starting_crates do
4487: LD_ADDR_VAR 0 8
4491: PUSH
4492: LD_EXP 14
4496: PUSH
4497: FOR_IN
4498: IFFALSE 4530
// CreateResourcesXYR ( mat_cans , 5 , x , y , r , false ) ;
4500: LD_INT 1
4502: PPUSH
4503: LD_INT 5
4505: PPUSH
4506: LD_VAR 0 4
4510: PPUSH
4511: LD_VAR 0 5
4515: PPUSH
4516: LD_VAR 0 8
4520: PPUSH
4521: LD_INT 0
4523: PPUSH
4524: CALL_OW 60
4528: GO 4497
4530: POP
4531: POP
// commander := true ;
4532: LD_ADDR_LOC 1
4536: PUSH
4537: LD_INT 1
4539: ST_TO_ADDR
// soldiers_created := 0 ;
4540: LD_ADDR_LOC 4
4544: PUSH
4545: LD_INT 0
4547: ST_TO_ADDR
// for i := 1 to number_of_breastworks do
4548: LD_ADDR_VAR 0 7
4552: PUSH
4553: DOUBLE
4554: LD_INT 1
4556: DEC
4557: ST_TO_ADDR
4558: LD_EXP 11
4562: PUSH
4563: FOR_TO
4564: IFFALSE 4786
// begin x := breastworks_def [ pos ] [ i ] [ 1 ] ;
4566: LD_ADDR_VAR 0 4
4570: PUSH
4571: LD_EXP 31
4575: PUSH
4576: LD_VAR 0 3
4580: ARRAY
4581: PUSH
4582: LD_VAR 0 7
4586: ARRAY
4587: PUSH
4588: LD_INT 1
4590: ARRAY
4591: ST_TO_ADDR
// y := breastworks_def [ pos ] [ i ] [ 2 ] ;
4592: LD_ADDR_VAR 0 5
4596: PUSH
4597: LD_EXP 31
4601: PUSH
4602: LD_VAR 0 3
4606: ARRAY
4607: PUSH
4608: LD_VAR 0 7
4612: ARRAY
4613: PUSH
4614: LD_INT 2
4616: ARRAY
4617: ST_TO_ADDR
// dir := breastworks_def [ pos ] [ i ] [ 3 ] ;
4618: LD_ADDR_VAR 0 6
4622: PUSH
4623: LD_EXP 31
4627: PUSH
4628: LD_VAR 0 3
4632: ARRAY
4633: PUSH
4634: LD_VAR 0 7
4638: ARRAY
4639: PUSH
4640: LD_INT 3
4642: ARRAY
4643: ST_TO_ADDR
// bc_type := b_breastwork ;
4644: LD_ADDR_OWVAR 42
4648: PUSH
4649: LD_INT 31
4651: ST_TO_ADDR
// br := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
4652: LD_ADDR_VAR 0 10
4656: PUSH
4657: LD_VAR 0 4
4661: PPUSH
4662: LD_VAR 0 5
4666: PPUSH
4667: LD_VAR 0 6
4671: PPUSH
4672: CALL_OW 47
4676: ST_TO_ADDR
// x := ShiftX ( x , dir , 2 ) ;
4677: LD_ADDR_VAR 0 4
4681: PUSH
4682: LD_VAR 0 4
4686: PPUSH
4687: LD_VAR 0 6
4691: PPUSH
4692: LD_INT 2
4694: PPUSH
4695: CALL_OW 272
4699: ST_TO_ADDR
// y := ShiftY ( y , dir , 2 ) ;
4700: LD_ADDR_VAR 0 5
4704: PUSH
4705: LD_VAR 0 5
4709: PPUSH
4710: LD_VAR 0 6
4714: PPUSH
4715: LD_INT 2
4717: PPUSH
4718: CALL_OW 273
4722: ST_TO_ADDR
// sol := prepare_people ( 1 , class_soldier , x , y , 0 ) [ 1 ] ;
4723: LD_ADDR_VAR 0 9
4727: PUSH
4728: LD_INT 1
4730: PPUSH
4731: LD_INT 1
4733: PPUSH
4734: LD_VAR 0 4
4738: PPUSH
4739: LD_VAR 0 5
4743: PPUSH
4744: LD_INT 0
4746: PPUSH
4747: CALL 3577 0 5
4751: PUSH
4752: LD_INT 1
4754: ARRAY
4755: ST_TO_ADDR
// soldiers_created := soldiers_created + 1 ;
4756: LD_ADDR_LOC 4
4760: PUSH
4761: LD_LOC 4
4765: PUSH
4766: LD_INT 1
4768: PLUS
4769: ST_TO_ADDR
// ComEnterUnit ( sol , br ) ;
4770: LD_VAR 0 9
4774: PPUSH
4775: LD_VAR 0 10
4779: PPUSH
4780: CALL_OW 120
// end ;
4784: GO 4563
4786: POP
4787: POP
// x := start_def [ pos ] [ 1 ] ;
4788: LD_ADDR_VAR 0 4
4792: PUSH
4793: LD_EXP 32
4797: PUSH
4798: LD_VAR 0 3
4802: ARRAY
4803: PUSH
4804: LD_INT 1
4806: ARRAY
4807: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
4808: LD_ADDR_VAR 0 5
4812: PUSH
4813: LD_EXP 32
4817: PUSH
4818: LD_VAR 0 3
4822: ARRAY
4823: PUSH
4824: LD_INT 2
4826: ARRAY
4827: ST_TO_ADDR
// prepare_people ( nsol - number_of_breastworks , class_soldier , x , y , 5 ) ;
4828: LD_LOC 8
4832: PUSH
4833: LD_EXP 11
4837: MINUS
4838: PPUSH
4839: LD_INT 1
4841: PPUSH
4842: LD_VAR 0 4
4846: PPUSH
4847: LD_VAR 0 5
4851: PPUSH
4852: LD_INT 5
4854: PPUSH
4855: CALL 3577 0 5
// prepare_people ( neng , class_engineer , x , y , 5 ) ;
4859: LD_LOC 5
4863: PPUSH
4864: LD_INT 2
4866: PPUSH
4867: LD_VAR 0 4
4871: PPUSH
4872: LD_VAR 0 5
4876: PPUSH
4877: LD_INT 5
4879: PPUSH
4880: CALL 3577 0 5
// prepare_people ( nmech , class_mechanic , x , y , 5 ) ;
4884: LD_LOC 7
4888: PPUSH
4889: LD_INT 3
4891: PPUSH
4892: LD_VAR 0 4
4896: PPUSH
4897: LD_VAR 0 5
4901: PPUSH
4902: LD_INT 5
4904: PPUSH
4905: CALL 3577 0 5
// prepare_people ( nsci , class_scientistic , x , y , 5 ) ;
4909: LD_LOC 6
4913: PPUSH
4914: LD_INT 4
4916: PPUSH
4917: LD_VAR 0 4
4921: PPUSH
4922: LD_VAR 0 5
4926: PPUSH
4927: LD_INT 5
4929: PPUSH
4930: CALL 3577 0 5
// SetTech ( tech_artifact , side , state_disabled ) ;
4934: LD_INT 24
4936: PPUSH
4937: LD_VAR 0 1
4941: PPUSH
4942: LD_INT 0
4944: PPUSH
4945: CALL_OW 322
// SetTech ( tech_SibFiss , side , state_disabled ) ;
4949: LD_INT 25
4951: PPUSH
4952: LD_VAR 0 1
4956: PPUSH
4957: LD_INT 0
4959: PPUSH
4960: CALL_OW 322
// global_defined := true ;
4964: LD_ADDR_LOC 3
4968: PUSH
4969: LD_INT 1
4971: ST_TO_ADDR
// end ;
4972: LD_VAR 0 2
4976: RET
// function prepare_sides ; var i ; begin
4977: LD_INT 0
4979: PPUSH
4980: PPUSH
// global_units := [ ] ;
4981: LD_ADDR_LOC 2
4985: PUSH
4986: EMPTY
4987: ST_TO_ADDR
// global_defined := false ;
4988: LD_ADDR_LOC 3
4992: PUSH
4993: LD_INT 0
4995: ST_TO_ADDR
// CountClassMembers ;
4996: CALL 5046 0 0
// for i := 1 to 8 do
5000: LD_ADDR_VAR 0 2
5004: PUSH
5005: DOUBLE
5006: LD_INT 1
5008: DEC
5009: ST_TO_ADDR
5010: LD_INT 8
5012: PUSH
5013: FOR_TO
5014: IFFALSE 5039
// if Side_Positions [ i ] then
5016: LD_EXP 26
5020: PUSH
5021: LD_VAR 0 2
5025: ARRAY
5026: IFFALSE 5037
// prepare_side ( i ) ;
5028: LD_VAR 0 2
5032: PPUSH
5033: CALL 4092 0 1
5037: GO 5013
5039: POP
5040: POP
// end ;
5041: LD_VAR 0 1
5045: RET
// function CountClassMembers ; var Mode ; begin
5046: LD_INT 0
5048: PPUSH
5049: PPUSH
// neng := number_of_people ;
5050: LD_ADDR_LOC 5
5054: PUSH
5055: LD_EXP 12
5059: ST_TO_ADDR
// nsol := neng div [ 4 , 3 ] [ Mode ] ;
5060: LD_ADDR_LOC 8
5064: PUSH
5065: LD_LOC 5
5069: PUSH
5070: LD_INT 4
5072: PUSH
5073: LD_INT 3
5075: PUSH
5076: EMPTY
5077: LIST
5078: LIST
5079: PUSH
5080: LD_VAR 0 2
5084: ARRAY
5085: DIV
5086: ST_TO_ADDR
// if ( nsol < number_of_breastworks ) then
5087: LD_LOC 8
5091: PUSH
5092: LD_EXP 11
5096: LESS
5097: IFFALSE 5109
// nsol := number_of_breastworks ;
5099: LD_ADDR_LOC 8
5103: PUSH
5104: LD_EXP 11
5108: ST_TO_ADDR
// neng := neng - nsol ;
5109: LD_ADDR_LOC 5
5113: PUSH
5114: LD_LOC 5
5118: PUSH
5119: LD_LOC 8
5123: MINUS
5124: ST_TO_ADDR
// nsci := neng div [ 3 , 2 ] [ Mode ] ;
5125: LD_ADDR_LOC 6
5129: PUSH
5130: LD_LOC 5
5134: PUSH
5135: LD_INT 3
5137: PUSH
5138: LD_INT 2
5140: PUSH
5141: EMPTY
5142: LIST
5143: LIST
5144: PUSH
5145: LD_VAR 0 2
5149: ARRAY
5150: DIV
5151: ST_TO_ADDR
// if ( nsci < 1 ) then
5152: LD_LOC 6
5156: PUSH
5157: LD_INT 1
5159: LESS
5160: IFFALSE 5170
// nsci := 1 ;
5162: LD_ADDR_LOC 6
5166: PUSH
5167: LD_INT 1
5169: ST_TO_ADDR
// neng := neng - nsci ;
5170: LD_ADDR_LOC 5
5174: PUSH
5175: LD_LOC 5
5179: PUSH
5180: LD_LOC 6
5184: MINUS
5185: ST_TO_ADDR
// nmech := [ neng div 2 , 0 ] [ Mode ] ;
5186: LD_ADDR_LOC 7
5190: PUSH
5191: LD_LOC 5
5195: PUSH
5196: LD_INT 2
5198: DIV
5199: PUSH
5200: LD_INT 0
5202: PUSH
5203: EMPTY
5204: LIST
5205: LIST
5206: PUSH
5207: LD_VAR 0 2
5211: ARRAY
5212: ST_TO_ADDR
// neng := neng - nmech ;
5213: LD_ADDR_LOC 5
5217: PUSH
5218: LD_LOC 5
5222: PUSH
5223: LD_LOC 7
5227: MINUS
5228: ST_TO_ADDR
// if ( neng < 1 ) then
5229: LD_LOC 5
5233: PUSH
5234: LD_INT 1
5236: LESS
5237: IFFALSE 5247
// neng := 1 ;
5239: LD_ADDR_LOC 5
5243: PUSH
5244: LD_INT 1
5246: ST_TO_ADDR
// end ;
5247: LD_VAR 0 1
5251: RET
// starting var i , d ; begin rudestroyedBuildings = [ ] ;
5252: LD_ADDR_EXP 40
5256: PUSH
5257: EMPTY
5258: ST_TO_ADDR
// randomedColors = [ ] ;
5259: LD_ADDR_EXP 42
5263: PUSH
5264: EMPTY
5265: ST_TO_ADDR
// ResetFog ;
5266: CALL_OW 335
// read_multiplayer_and_game_parameters ;
5270: CALL 1866 0 0
// MultiplayerColorCheck ;
5274: CALL 7007 0 0
// ChangeAISide ( 0 , randomedColors [ 1 ] ) ;
5278: LD_INT 0
5280: PPUSH
5281: LD_EXP 42
5285: PUSH
5286: LD_INT 1
5288: ARRAY
5289: PPUSH
5290: CALL 6235 0 2
// enable_human_prediction := true ;
5294: LD_ADDR_OWVAR 51
5298: PUSH
5299: LD_INT 1
5301: ST_TO_ADDR
// mp_selectmsg := true ;
5302: LD_ADDR_OWVAR 13
5306: PUSH
5307: LD_INT 1
5309: ST_TO_ADDR
// AIDepotDest = 0 ;
5310: LD_ADDR_EXP 41
5314: PUSH
5315: LD_INT 0
5317: ST_TO_ADDR
// init_map ;
5318: CALL 2910 0 0
// init_respawning ;
5322: CALL 5429 0 0
// set_shared_visions_and_alliances ;
5326: CALL 3289 0 0
// prepare_sides ;
5330: CALL 4977 0 0
// SpawnGenerals ;
5334: CALL 5852 0 0
// music_nat := Side_Nations [ your_side ] ;
5338: LD_ADDR_OWVAR 71
5342: PUSH
5343: LD_EXP 27
5347: PUSH
5348: LD_OWVAR 2
5352: ARRAY
5353: ST_TO_ADDR
// if IAmSpec then
5354: CALL_OW 531
5358: IFFALSE 5382
// begin FogOff ( true ) ;
5360: LD_INT 1
5362: PPUSH
5363: CALL_OW 344
// CenterNowOnXY ( 104 , 69 ) ;
5367: LD_INT 104
5369: PPUSH
5370: LD_INT 69
5372: PPUSH
5373: CALL_OW 86
// enable ( 400 ) ;
5377: LD_INT 400
5379: ENABLE_MARKED
// end else
5380: GO 5428
// begin CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
5382: LD_EXP 32
5386: PUSH
5387: LD_EXP 26
5391: PUSH
5392: LD_OWVAR 2
5396: ARRAY
5397: ARRAY
5398: PUSH
5399: LD_INT 1
5401: ARRAY
5402: PPUSH
5403: LD_EXP 32
5407: PUSH
5408: LD_EXP 26
5412: PUSH
5413: LD_OWVAR 2
5417: ARRAY
5418: ARRAY
5419: PUSH
5420: LD_INT 2
5422: ARRAY
5423: PPUSH
5424: CALL_OW 86
// end ; end ; end_of_file
5428: END
// var respawn , inqueue ; export function init_respawning ; begin
5429: LD_INT 0
5431: PPUSH
// respawn := Rand ( 1 , 8 ) ;
5432: LD_ADDR_LOC 9
5436: PUSH
5437: LD_INT 1
5439: PPUSH
5440: LD_INT 8
5442: PPUSH
5443: CALL_OW 12
5447: ST_TO_ADDR
// inqueue := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
5448: LD_ADDR_LOC 10
5452: PUSH
5453: LD_INT 0
5455: PUSH
5456: LD_INT 0
5458: PUSH
5459: LD_INT 0
5461: PUSH
5462: LD_INT 0
5464: PUSH
5465: LD_INT 0
5467: PUSH
5468: LD_INT 0
5470: PUSH
5471: LD_INT 0
5473: PUSH
5474: LD_INT 0
5476: PUSH
5477: EMPTY
5478: LIST
5479: LIST
5480: LIST
5481: LIST
5482: LIST
5483: LIST
5484: LIST
5485: LIST
5486: ST_TO_ADDR
// end ;
5487: LD_VAR 0 1
5491: RET
// every 0 0$1 + 0 0$0.5 do var n , building_list , aktresp , b , skills , k ;
5492: GO 5494
5494: DISABLE
5495: LD_INT 0
5497: PPUSH
5498: PPUSH
5499: PPUSH
5500: PPUSH
5501: PPUSH
5502: PPUSH
// begin if respawning_time_max = 0 then
5503: LD_EXP 21
5507: PUSH
5508: LD_INT 0
5510: EQUAL
5511: IFFALSE 5515
// exit ;
5513: GO 5688
// if respawn = 8 then
5515: LD_LOC 9
5519: PUSH
5520: LD_INT 8
5522: EQUAL
5523: IFFALSE 5535
// respawn := 1 else
5525: LD_ADDR_LOC 9
5529: PUSH
5530: LD_INT 1
5532: ST_TO_ADDR
5533: GO 5549
// respawn := respawn + 1 ;
5535: LD_ADDR_LOC 9
5539: PUSH
5540: LD_LOC 9
5544: PUSH
5545: LD_INT 1
5547: PLUS
5548: ST_TO_ADDR
// if Side_Positions [ respawn ] then
5549: LD_EXP 26
5553: PUSH
5554: LD_LOC 9
5558: ARRAY
5559: IFFALSE 5687
// begin n := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , respawn ] , f_not , [ f_nation , nation_nature ] ] ) ;
5561: LD_ADDR_VAR 0 1
5565: PUSH
5566: LD_INT 21
5568: PUSH
5569: LD_INT 1
5571: PUSH
5572: EMPTY
5573: LIST
5574: LIST
5575: PUSH
5576: LD_INT 22
5578: PUSH
5579: LD_LOC 9
5583: PUSH
5584: EMPTY
5585: LIST
5586: LIST
5587: PUSH
5588: LD_INT 3
5590: PUSH
5591: LD_INT 23
5593: PUSH
5594: LD_INT 0
5596: PUSH
5597: EMPTY
5598: LIST
5599: LIST
5600: PUSH
5601: EMPTY
5602: LIST
5603: LIST
5604: LIST
5605: LIST
5606: PPUSH
5607: CALL_OW 69
5611: ST_TO_ADDR
// if ( n + inqueue [ respawn ] ) < number_of_people then
5612: LD_VAR 0 1
5616: PUSH
5617: LD_LOC 10
5621: PUSH
5622: LD_LOC 9
5626: ARRAY
5627: PLUS
5628: PUSH
5629: LD_EXP 12
5633: LESS
5634: IFFALSE 5684
// begin aktresp := respawn ;
5636: LD_ADDR_VAR 0 3
5640: PUSH
5641: LD_LOC 9
5645: ST_TO_ADDR
// inqueue := Replace ( inqueue , aktresp , inqueue [ aktresp ] + 1 ) ;
5646: LD_ADDR_LOC 10
5650: PUSH
5651: LD_LOC 10
5655: PPUSH
5656: LD_VAR 0 3
5660: PPUSH
5661: LD_LOC 10
5665: PUSH
5666: LD_VAR 0 3
5670: ARRAY
5671: PUSH
5672: LD_INT 1
5674: PLUS
5675: PPUSH
5676: CALL_OW 1
5680: ST_TO_ADDR
// enable ;
5681: ENABLE
// end else
5682: GO 5685
// enable ;
5684: ENABLE
// end else
5685: GO 5688
// enable ;
5687: ENABLE
// end ;
5688: PPOPN 6
5690: END
// export function OnHumanRespawned ( un ) ; begin
5691: LD_INT 0
5693: PPUSH
// wait ( 0 0$30 ) ;
5694: LD_INT 1050
5696: PPUSH
5697: CALL_OW 67
// inqueue := Replace ( inqueue , GetSide ( un ) , inqueue [ GetSide ( un ) ] - 1 ) ;
5701: LD_ADDR_LOC 10
5705: PUSH
5706: LD_LOC 10
5710: PPUSH
5711: LD_VAR 0 1
5715: PPUSH
5716: CALL_OW 255
5720: PPUSH
5721: LD_LOC 10
5725: PUSH
5726: LD_VAR 0 1
5730: PPUSH
5731: CALL_OW 255
5735: ARRAY
5736: PUSH
5737: LD_INT 1
5739: MINUS
5740: PPUSH
5741: CALL_OW 1
5745: ST_TO_ADDR
// end ;
5746: LD_VAR 0 2
5750: RET
// on HumanDestroyed ( identifier , side , nation , x , y , direction , sex , cl ) do var attr , skills ;
5751: LD_INT 0
5753: PPUSH
5754: PPUSH
// begin if nation = nation_nature or side = 0 then
5755: LD_VAR 0 3
5759: PUSH
5760: LD_INT 0
5762: EQUAL
5763: PUSH
5764: LD_VAR 0 2
5768: PUSH
5769: LD_INT 0
5771: EQUAL
5772: OR
5773: IFFALSE 5777
// exit ;
5775: GO 5812
// inqueue := Replace ( inqueue , side , inqueue [ side ] + 1 ) ;
5777: LD_ADDR_LOC 10
5781: PUSH
5782: LD_LOC 10
5786: PPUSH
5787: LD_VAR 0 2
5791: PPUSH
5792: LD_LOC 10
5796: PUSH
5797: LD_VAR 0 2
5801: ARRAY
5802: PUSH
5803: LD_INT 1
5805: PLUS
5806: PPUSH
5807: CALL_OW 1
5811: ST_TO_ADDR
// end ; end_of_file
5812: PPOPN 10
5814: END
// every 0 0$10 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] ] ) = 0 do
5815: LD_INT 22
5817: PUSH
5818: LD_EXP 42
5822: PUSH
5823: LD_INT 1
5825: ARRAY
5826: PUSH
5827: EMPTY
5828: LIST
5829: LIST
5830: PUSH
5831: EMPTY
5832: LIST
5833: PPUSH
5834: CALL_OW 69
5838: PUSH
5839: LD_INT 0
5841: EQUAL
5842: IFFALSE 5851
5844: GO 5846
5846: DISABLE
// YouWinInMultiplayer ; end_of_file
5847: CALL_OW 106
5851: END
// export function SpawnGenerals ; var x , y , un ; begin
5852: LD_INT 0
5854: PPUSH
5855: PPUSH
5856: PPUSH
5857: PPUSH
// uc_side = sideP1 ;
5858: LD_ADDR_OWVAR 20
5862: PUSH
5863: LD_EXP 43
5867: ST_TO_ADDR
// uc_nation = 1 ;
5868: LD_ADDR_OWVAR 21
5872: PUSH
5873: LD_INT 1
5875: ST_TO_ADDR
// hc_gallery = us ;
5876: LD_ADDR_OWVAR 33
5880: PUSH
5881: LD_STRING us
5883: ST_TO_ADDR
// hc_face_number = 3 ;
5884: LD_ADDR_OWVAR 34
5888: PUSH
5889: LD_INT 3
5891: ST_TO_ADDR
// hc_name = Lisa ;
5892: LD_ADDR_OWVAR 26
5896: PUSH
5897: LD_STRING Lisa
5899: ST_TO_ADDR
// hc_sex = sex_female ;
5900: LD_ADDR_OWVAR 27
5904: PUSH
5905: LD_INT 2
5907: ST_TO_ADDR
// hc_class = 1 ;
5908: LD_ADDR_OWVAR 28
5912: PUSH
5913: LD_INT 1
5915: ST_TO_ADDR
// hc_skills = [ 10 , 8 , 6 , 5 ] ;
5916: LD_ADDR_OWVAR 31
5920: PUSH
5921: LD_INT 10
5923: PUSH
5924: LD_INT 8
5926: PUSH
5927: LD_INT 6
5929: PUSH
5930: LD_INT 5
5932: PUSH
5933: EMPTY
5934: LIST
5935: LIST
5936: LIST
5937: LIST
5938: ST_TO_ADDR
// hc_importance = 100 ;
5939: LD_ADDR_OWVAR 32
5943: PUSH
5944: LD_INT 100
5946: ST_TO_ADDR
// un = CreateHuman ;
5947: LD_ADDR_VAR 0 4
5951: PUSH
5952: CALL_OW 44
5956: ST_TO_ADDR
// x = GetX ( FilterAllUnits ( [ f_side , sideP1 ] ) [ 1 ] ) ;
5957: LD_ADDR_VAR 0 2
5961: PUSH
5962: LD_INT 22
5964: PUSH
5965: LD_EXP 43
5969: PUSH
5970: EMPTY
5971: LIST
5972: LIST
5973: PPUSH
5974: CALL_OW 69
5978: PUSH
5979: LD_INT 1
5981: ARRAY
5982: PPUSH
5983: CALL_OW 250
5987: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ f_side , sideP1 ] ) [ 1 ] ) ;
5988: LD_ADDR_VAR 0 3
5992: PUSH
5993: LD_INT 22
5995: PUSH
5996: LD_EXP 43
6000: PUSH
6001: EMPTY
6002: LIST
6003: LIST
6004: PPUSH
6005: CALL_OW 69
6009: PUSH
6010: LD_INT 1
6012: ARRAY
6013: PPUSH
6014: CALL_OW 251
6018: ST_TO_ADDR
// PlaceUnitXYR ( un , x , y , 10 , false ) ;
6019: LD_VAR 0 4
6023: PPUSH
6024: LD_VAR 0 2
6028: PPUSH
6029: LD_VAR 0 3
6033: PPUSH
6034: LD_INT 10
6036: PPUSH
6037: LD_INT 0
6039: PPUSH
6040: CALL_OW 50
// uc_side = sideP2 ;
6044: LD_ADDR_OWVAR 20
6048: PUSH
6049: LD_EXP 44
6053: ST_TO_ADDR
// uc_nation = 1 ;
6054: LD_ADDR_OWVAR 21
6058: PUSH
6059: LD_INT 1
6061: ST_TO_ADDR
// hc_gallery = us ;
6062: LD_ADDR_OWVAR 33
6066: PUSH
6067: LD_STRING us
6069: ST_TO_ADDR
// hc_face_number = 4 ;
6070: LD_ADDR_OWVAR 34
6074: PUSH
6075: LD_INT 4
6077: ST_TO_ADDR
// hc_name = Joan ;
6078: LD_ADDR_OWVAR 26
6082: PUSH
6083: LD_STRING Joan
6085: ST_TO_ADDR
// hc_sex = sex_female ;
6086: LD_ADDR_OWVAR 27
6090: PUSH
6091: LD_INT 2
6093: ST_TO_ADDR
// hc_class = 4 ;
6094: LD_ADDR_OWVAR 28
6098: PUSH
6099: LD_INT 4
6101: ST_TO_ADDR
// hc_skills = [ 4 , 6 , 8 , 10 ] ;
6102: LD_ADDR_OWVAR 31
6106: PUSH
6107: LD_INT 4
6109: PUSH
6110: LD_INT 6
6112: PUSH
6113: LD_INT 8
6115: PUSH
6116: LD_INT 10
6118: PUSH
6119: EMPTY
6120: LIST
6121: LIST
6122: LIST
6123: LIST
6124: ST_TO_ADDR
// hc_importance = 100 ;
6125: LD_ADDR_OWVAR 32
6129: PUSH
6130: LD_INT 100
6132: ST_TO_ADDR
// un = CreateHuman ;
6133: LD_ADDR_VAR 0 4
6137: PUSH
6138: CALL_OW 44
6142: ST_TO_ADDR
// x = GetX ( FilterAllUnits ( [ f_side , sideP2 ] ) [ 1 ] ) ;
6143: LD_ADDR_VAR 0 2
6147: PUSH
6148: LD_INT 22
6150: PUSH
6151: LD_EXP 44
6155: PUSH
6156: EMPTY
6157: LIST
6158: LIST
6159: PPUSH
6160: CALL_OW 69
6164: PUSH
6165: LD_INT 1
6167: ARRAY
6168: PPUSH
6169: CALL_OW 250
6173: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ f_side , sideP2 ] ) [ 1 ] ) ;
6174: LD_ADDR_VAR 0 3
6178: PUSH
6179: LD_INT 22
6181: PUSH
6182: LD_EXP 44
6186: PUSH
6187: EMPTY
6188: LIST
6189: LIST
6190: PPUSH
6191: CALL_OW 69
6195: PUSH
6196: LD_INT 1
6198: ARRAY
6199: PPUSH
6200: CALL_OW 251
6204: ST_TO_ADDR
// PlaceUnitXYR ( un , x , y , 10 , false ) ;
6205: LD_VAR 0 4
6209: PPUSH
6210: LD_VAR 0 2
6214: PPUSH
6215: LD_VAR 0 3
6219: PPUSH
6220: LD_INT 10
6222: PPUSH
6223: LD_INT 0
6225: PPUSH
6226: CALL_OW 50
// end ;
6230: LD_VAR 0 1
6234: RET
// export function ChangeAISide ( originalSide , newSide ) ; begin
6235: LD_INT 0
6237: PPUSH
// SetSide ( FilterAllUnits ( [ f_side , originalSide ] ) , newSide ) ;
6238: LD_INT 22
6240: PUSH
6241: LD_VAR 0 1
6245: PUSH
6246: EMPTY
6247: LIST
6248: LIST
6249: PPUSH
6250: CALL_OW 69
6254: PPUSH
6255: LD_VAR 0 2
6259: PPUSH
6260: CALL_OW 235
// wait ( 0 0$2 ) ;
6264: LD_INT 70
6266: PPUSH
6267: CALL_OW 67
// PrepareRussianBase ;
6271: CALL 6284 0 0
// PrepareDifficulty ;
6275: CALL 7164 0 0
// end ;
6279: LD_VAR 0 3
6283: RET
// export function PrepareRussianBase ; var i ; begin
6284: LD_INT 0
6286: PPUSH
6287: PPUSH
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_bunker ] , [ f_bweapon , 42 ] ] ) do
6288: LD_ADDR_VAR 0 2
6292: PUSH
6293: LD_INT 22
6295: PUSH
6296: LD_EXP 42
6300: PUSH
6301: LD_INT 1
6303: ARRAY
6304: PUSH
6305: EMPTY
6306: LIST
6307: LIST
6308: PUSH
6309: LD_INT 30
6311: PUSH
6312: LD_INT 32
6314: PUSH
6315: EMPTY
6316: LIST
6317: LIST
6318: PUSH
6319: LD_INT 35
6321: PUSH
6322: LD_INT 42
6324: PUSH
6325: EMPTY
6326: LIST
6327: LIST
6328: PUSH
6329: EMPTY
6330: LIST
6331: LIST
6332: LIST
6333: PPUSH
6334: CALL_OW 69
6338: PUSH
6339: FOR_IN
6340: IFFALSE 6411
// begin MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , i , difficulty_level , 1 , 1 ) ;
6342: LD_EXP 42
6346: PUSH
6347: LD_INT 1
6349: ARRAY
6350: PPUSH
6351: LD_INT 3
6353: PPUSH
6354: LD_VAR 0 2
6358: PPUSH
6359: LD_EXP 39
6363: PPUSH
6364: LD_INT 1
6366: PPUSH
6367: LD_INT 1
6369: PPUSH
6370: CALL 7601 0 6
// PlaceWeaponTurret ( i , [ 46 , 45 , 47 ] [ Rand ( 1 , 3 ) ] ) ;
6374: LD_VAR 0 2
6378: PPUSH
6379: LD_INT 46
6381: PUSH
6382: LD_INT 45
6384: PUSH
6385: LD_INT 47
6387: PUSH
6388: EMPTY
6389: LIST
6390: LIST
6391: LIST
6392: PUSH
6393: LD_INT 1
6395: PPUSH
6396: LD_INT 3
6398: PPUSH
6399: CALL_OW 12
6403: ARRAY
6404: PPUSH
6405: CALL_OW 431
// end ;
6409: GO 6339
6411: POP
6412: POP
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_bunker ] , [ f_bweapon , 49 ] ] ) do
6413: LD_ADDR_VAR 0 2
6417: PUSH
6418: LD_INT 22
6420: PUSH
6421: LD_EXP 42
6425: PUSH
6426: LD_INT 1
6428: ARRAY
6429: PUSH
6430: EMPTY
6431: LIST
6432: LIST
6433: PUSH
6434: LD_INT 30
6436: PUSH
6437: LD_INT 32
6439: PUSH
6440: EMPTY
6441: LIST
6442: LIST
6443: PUSH
6444: LD_INT 35
6446: PUSH
6447: LD_INT 49
6449: PUSH
6450: EMPTY
6451: LIST
6452: LIST
6453: PUSH
6454: EMPTY
6455: LIST
6456: LIST
6457: LIST
6458: PPUSH
6459: CALL_OW 69
6463: PUSH
6464: FOR_IN
6465: IFFALSE 6501
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , i , difficulty_level , 1 , 1 ) ;
6467: LD_EXP 42
6471: PUSH
6472: LD_INT 1
6474: ARRAY
6475: PPUSH
6476: LD_INT 3
6478: PPUSH
6479: LD_VAR 0 2
6483: PPUSH
6484: LD_EXP 39
6488: PPUSH
6489: LD_INT 1
6491: PPUSH
6492: LD_INT 1
6494: PPUSH
6495: CALL 7601 0 6
6499: GO 6464
6501: POP
6502: POP
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rudepot , difficulty_level , 2 , 6 ) ;
6503: LD_EXP 42
6507: PUSH
6508: LD_INT 1
6510: ARRAY
6511: PPUSH
6512: LD_INT 3
6514: PPUSH
6515: LD_INT 52
6517: PPUSH
6518: LD_EXP 39
6522: PPUSH
6523: LD_INT 2
6525: PPUSH
6526: LD_INT 6
6528: PPUSH
6529: CALL 7601 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab1 , difficulty_level , 3 , 6 ) ;
6533: LD_EXP 42
6537: PUSH
6538: LD_INT 1
6540: ARRAY
6541: PPUSH
6542: LD_INT 3
6544: PPUSH
6545: LD_INT 53
6547: PPUSH
6548: LD_EXP 39
6552: PPUSH
6553: LD_INT 3
6555: PPUSH
6556: LD_INT 6
6558: PPUSH
6559: CALL 7601 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab2 , difficulty_level , 3 , 6 ) ;
6563: LD_EXP 42
6567: PUSH
6568: LD_INT 1
6570: ARRAY
6571: PPUSH
6572: LD_INT 3
6574: PPUSH
6575: LD_INT 54
6577: PPUSH
6578: LD_EXP 39
6582: PPUSH
6583: LD_INT 3
6585: PPUSH
6586: LD_INT 6
6588: PPUSH
6589: CALL 7601 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rulab1 , difficulty_level , 4 , 3 ) ;
6593: LD_EXP 42
6597: PUSH
6598: LD_INT 1
6600: ARRAY
6601: PPUSH
6602: LD_INT 3
6604: PPUSH
6605: LD_INT 68
6607: PPUSH
6608: LD_EXP 39
6612: PPUSH
6613: LD_INT 4
6615: PPUSH
6616: LD_INT 3
6618: PPUSH
6619: CALL 7601 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rulab2 , difficulty_level , 4 , 3 ) ;
6623: LD_EXP 42
6627: PUSH
6628: LD_INT 1
6630: ARRAY
6631: PPUSH
6632: LD_INT 3
6634: PPUSH
6635: LD_INT 72
6637: PPUSH
6638: LD_EXP 39
6642: PPUSH
6643: LD_INT 4
6645: PPUSH
6646: LD_INT 3
6648: PPUSH
6649: CALL 7601 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , ruarm1 , difficulty_level , 9 , 3 ) ;
6653: LD_EXP 42
6657: PUSH
6658: LD_INT 1
6660: ARRAY
6661: PPUSH
6662: LD_INT 3
6664: PPUSH
6665: LD_INT 75
6667: PPUSH
6668: LD_EXP 39
6672: PPUSH
6673: LD_INT 9
6675: PPUSH
6676: LD_INT 3
6678: PPUSH
6679: CALL 7601 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , ruarm2 , difficulty_level , 9 , 3 ) ;
6683: LD_EXP 42
6687: PUSH
6688: LD_INT 1
6690: ARRAY
6691: PPUSH
6692: LD_INT 3
6694: PPUSH
6695: LD_INT 81
6697: PPUSH
6698: LD_EXP 39
6702: PPUSH
6703: LD_INT 9
6705: PPUSH
6706: LD_INT 3
6708: PPUSH
6709: CALL 7601 0 6
// TeleportExit ( rutp , 23 , 23 ) ;
6713: LD_INT 92
6715: PPUSH
6716: LD_INT 23
6718: PPUSH
6719: LD_INT 23
6721: PPUSH
6722: CALL_OW 243
// SetTech ( 57 , randomedColors [ 1 ] , state_researched ) ;
6726: LD_INT 57
6728: PPUSH
6729: LD_EXP 42
6733: PUSH
6734: LD_INT 1
6736: ARRAY
6737: PPUSH
6738: LD_INT 2
6740: PPUSH
6741: CALL_OW 322
// SetTech ( 58 , randomedColors [ 1 ] , state_researched ) ;
6745: LD_INT 58
6747: PPUSH
6748: LD_EXP 42
6752: PUSH
6753: LD_INT 1
6755: ARRAY
6756: PPUSH
6757: LD_INT 2
6759: PPUSH
6760: CALL_OW 322
// SetTech ( 59 , randomedColors [ 1 ] , state_researched ) ;
6764: LD_INT 59
6766: PPUSH
6767: LD_EXP 42
6771: PUSH
6772: LD_INT 1
6774: ARRAY
6775: PPUSH
6776: LD_INT 2
6778: PPUSH
6779: CALL_OW 322
// SetTech ( 28 , randomedColors [ 1 ] , state_researched ) ;
6783: LD_INT 28
6785: PPUSH
6786: LD_EXP 42
6790: PUSH
6791: LD_INT 1
6793: ARRAY
6794: PPUSH
6795: LD_INT 2
6797: PPUSH
6798: CALL_OW 322
// SetTech ( 30 , randomedColors [ 1 ] , state_researched ) ;
6802: LD_INT 30
6804: PPUSH
6805: LD_EXP 42
6809: PUSH
6810: LD_INT 1
6812: ARRAY
6813: PPUSH
6814: LD_INT 2
6816: PPUSH
6817: CALL_OW 322
// SetTech ( 1 , randomedColors [ 1 ] , state_disabled ) ;
6821: LD_INT 1
6823: PPUSH
6824: LD_EXP 42
6828: PUSH
6829: LD_INT 1
6831: ARRAY
6832: PPUSH
6833: LD_INT 0
6835: PPUSH
6836: CALL_OW 322
// SetTech ( 28 , randomedColors [ 2 ] , state_researched ) ;
6840: LD_INT 28
6842: PPUSH
6843: LD_EXP 42
6847: PUSH
6848: LD_INT 2
6850: ARRAY
6851: PPUSH
6852: LD_INT 2
6854: PPUSH
6855: CALL_OW 322
// SetTech ( 30 , randomedColors [ 2 ] , state_researched ) ;
6859: LD_INT 30
6861: PPUSH
6862: LD_EXP 42
6866: PUSH
6867: LD_INT 2
6869: ARRAY
6870: PPUSH
6871: LD_INT 2
6873: PPUSH
6874: CALL_OW 322
// SetAttitude ( randomedColors [ 1 ] , randomedColors [ 2 ] , att_friend , true ) ;
6878: LD_EXP 42
6882: PUSH
6883: LD_INT 1
6885: ARRAY
6886: PPUSH
6887: LD_EXP 42
6891: PUSH
6892: LD_INT 2
6894: ARRAY
6895: PPUSH
6896: LD_INT 1
6898: PPUSH
6899: LD_INT 1
6901: PPUSH
6902: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP1 , att_enemy , true ) ;
6906: LD_EXP 42
6910: PUSH
6911: LD_INT 1
6913: ARRAY
6914: PPUSH
6915: LD_EXP 43
6919: PPUSH
6920: LD_INT 2
6922: PPUSH
6923: LD_INT 1
6925: PPUSH
6926: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP2 , att_enemy , true ) ;
6930: LD_EXP 42
6934: PUSH
6935: LD_INT 1
6937: ARRAY
6938: PPUSH
6939: LD_EXP 44
6943: PPUSH
6944: LD_INT 2
6946: PPUSH
6947: LD_INT 1
6949: PPUSH
6950: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP1 , att_enemy , true ) ;
6954: LD_EXP 42
6958: PUSH
6959: LD_INT 2
6961: ARRAY
6962: PPUSH
6963: LD_EXP 43
6967: PPUSH
6968: LD_INT 2
6970: PPUSH
6971: LD_INT 1
6973: PPUSH
6974: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP2 , att_enemy , true ) ;
6978: LD_EXP 42
6982: PUSH
6983: LD_INT 2
6985: ARRAY
6986: PPUSH
6987: LD_EXP 44
6991: PPUSH
6992: LD_INT 2
6994: PPUSH
6995: LD_INT 1
6997: PPUSH
6998: CALL_OW 80
// end ;
7002: LD_VAR 0 1
7006: RET
// export function MultiplayerColorCheck ; var i , tmp ; begin
7007: LD_INT 0
7009: PPUSH
7010: PPUSH
7011: PPUSH
// for i = 1 to Side_Positions do
7012: LD_ADDR_VAR 0 2
7016: PUSH
7017: DOUBLE
7018: LD_INT 1
7020: DEC
7021: ST_TO_ADDR
7022: LD_EXP 26
7026: PUSH
7027: FOR_TO
7028: IFFALSE 7058
// if Side_Positions [ i ] = 1 then
7030: LD_EXP 26
7034: PUSH
7035: LD_VAR 0 2
7039: ARRAY
7040: PUSH
7041: LD_INT 1
7043: EQUAL
7044: IFFALSE 7056
// sideP1 = i ;
7046: LD_ADDR_EXP 43
7050: PUSH
7051: LD_VAR 0 2
7055: ST_TO_ADDR
7056: GO 7027
7058: POP
7059: POP
// for i = 1 to Side_Positions do
7060: LD_ADDR_VAR 0 2
7064: PUSH
7065: DOUBLE
7066: LD_INT 1
7068: DEC
7069: ST_TO_ADDR
7070: LD_EXP 26
7074: PUSH
7075: FOR_TO
7076: IFFALSE 7106
// if Side_Positions [ i ] = 2 then
7078: LD_EXP 26
7082: PUSH
7083: LD_VAR 0 2
7087: ARRAY
7088: PUSH
7089: LD_INT 2
7091: EQUAL
7092: IFFALSE 7104
// sideP2 = i ;
7094: LD_ADDR_EXP 44
7098: PUSH
7099: LD_VAR 0 2
7103: ST_TO_ADDR
7104: GO 7075
7106: POP
7107: POP
// randomedColors = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] diff sideP1 ^ sideP2 ;
7108: LD_ADDR_EXP 42
7112: PUSH
7113: LD_INT 1
7115: PUSH
7116: LD_INT 2
7118: PUSH
7119: LD_INT 3
7121: PUSH
7122: LD_INT 4
7124: PUSH
7125: LD_INT 5
7127: PUSH
7128: LD_INT 6
7130: PUSH
7131: LD_INT 7
7133: PUSH
7134: LD_INT 8
7136: PUSH
7137: EMPTY
7138: LIST
7139: LIST
7140: LIST
7141: LIST
7142: LIST
7143: LIST
7144: LIST
7145: LIST
7146: PUSH
7147: LD_EXP 43
7151: PUSH
7152: LD_EXP 44
7156: ADD
7157: DIFF
7158: ST_TO_ADDR
// end ;
7159: LD_VAR 0 1
7163: RET
// export function PrepareDifficulty ; begin
7164: LD_INT 0
7166: PPUSH
// if difficulty_level > 5 then
7167: LD_EXP 39
7171: PUSH
7172: LD_INT 5
7174: GREATER
7175: IFFALSE 7310
// begin SetTech ( 48 , randomedColors [ 2 ] , state_researched ) ;
7177: LD_INT 48
7179: PPUSH
7180: LD_EXP 42
7184: PUSH
7185: LD_INT 2
7187: ARRAY
7188: PPUSH
7189: LD_INT 2
7191: PPUSH
7192: CALL_OW 322
// SetTech ( 51 , randomedColors [ 2 ] , state_researched ) ;
7196: LD_INT 51
7198: PPUSH
7199: LD_EXP 42
7203: PUSH
7204: LD_INT 2
7206: ARRAY
7207: PPUSH
7208: LD_INT 2
7210: PPUSH
7211: CALL_OW 322
// SetTech ( 54 , randomedColors [ 2 ] , state_researched ) ;
7215: LD_INT 54
7217: PPUSH
7218: LD_EXP 42
7222: PUSH
7223: LD_INT 2
7225: ARRAY
7226: PPUSH
7227: LD_INT 2
7229: PPUSH
7230: CALL_OW 322
// SetTech ( 57 , randomedColors [ 2 ] , state_researched ) ;
7234: LD_INT 57
7236: PPUSH
7237: LD_EXP 42
7241: PUSH
7242: LD_INT 2
7244: ARRAY
7245: PPUSH
7246: LD_INT 2
7248: PPUSH
7249: CALL_OW 322
// SetTech ( 60 , randomedColors [ 2 ] , state_researched ) ;
7253: LD_INT 60
7255: PPUSH
7256: LD_EXP 42
7260: PUSH
7261: LD_INT 2
7263: ARRAY
7264: PPUSH
7265: LD_INT 2
7267: PPUSH
7268: CALL_OW 322
// SetTech ( 63 , randomedColors [ 2 ] , state_researched ) ;
7272: LD_INT 63
7274: PPUSH
7275: LD_EXP 42
7279: PUSH
7280: LD_INT 2
7282: ARRAY
7283: PPUSH
7284: LD_INT 2
7286: PPUSH
7287: CALL_OW 322
// SetTech ( 66 , randomedColors [ 2 ] , state_researched ) ;
7291: LD_INT 66
7293: PPUSH
7294: LD_EXP 42
7298: PUSH
7299: LD_INT 2
7301: ARRAY
7302: PPUSH
7303: LD_INT 2
7305: PPUSH
7306: CALL_OW 322
// end ; if difficulty_level > 6 then
7310: LD_EXP 39
7314: PUSH
7315: LD_INT 6
7317: GREATER
7318: IFFALSE 7453
// begin SetTech ( 49 , randomedColors [ 2 ] , state_researched ) ;
7320: LD_INT 49
7322: PPUSH
7323: LD_EXP 42
7327: PUSH
7328: LD_INT 2
7330: ARRAY
7331: PPUSH
7332: LD_INT 2
7334: PPUSH
7335: CALL_OW 322
// SetTech ( 52 , randomedColors [ 2 ] , state_researched ) ;
7339: LD_INT 52
7341: PPUSH
7342: LD_EXP 42
7346: PUSH
7347: LD_INT 2
7349: ARRAY
7350: PPUSH
7351: LD_INT 2
7353: PPUSH
7354: CALL_OW 322
// SetTech ( 55 , randomedColors [ 2 ] , state_researched ) ;
7358: LD_INT 55
7360: PPUSH
7361: LD_EXP 42
7365: PUSH
7366: LD_INT 2
7368: ARRAY
7369: PPUSH
7370: LD_INT 2
7372: PPUSH
7373: CALL_OW 322
// SetTech ( 58 , randomedColors [ 2 ] , state_researched ) ;
7377: LD_INT 58
7379: PPUSH
7380: LD_EXP 42
7384: PUSH
7385: LD_INT 2
7387: ARRAY
7388: PPUSH
7389: LD_INT 2
7391: PPUSH
7392: CALL_OW 322
// SetTech ( 61 , randomedColors [ 2 ] , state_researched ) ;
7396: LD_INT 61
7398: PPUSH
7399: LD_EXP 42
7403: PUSH
7404: LD_INT 2
7406: ARRAY
7407: PPUSH
7408: LD_INT 2
7410: PPUSH
7411: CALL_OW 322
// SetTech ( 64 , randomedColors [ 2 ] , state_researched ) ;
7415: LD_INT 64
7417: PPUSH
7418: LD_EXP 42
7422: PUSH
7423: LD_INT 2
7425: ARRAY
7426: PPUSH
7427: LD_INT 2
7429: PPUSH
7430: CALL_OW 322
// SetTech ( 67 , randomedColors [ 2 ] , state_researched ) ;
7434: LD_INT 67
7436: PPUSH
7437: LD_EXP 42
7441: PUSH
7442: LD_INT 2
7444: ARRAY
7445: PPUSH
7446: LD_INT 2
7448: PPUSH
7449: CALL_OW 322
// end ; if difficulty_level > 8 then
7453: LD_EXP 39
7457: PUSH
7458: LD_INT 8
7460: GREATER
7461: IFFALSE 7596
// begin SetTech ( 50 , randomedColors [ 2 ] , state_researched ) ;
7463: LD_INT 50
7465: PPUSH
7466: LD_EXP 42
7470: PUSH
7471: LD_INT 2
7473: ARRAY
7474: PPUSH
7475: LD_INT 2
7477: PPUSH
7478: CALL_OW 322
// SetTech ( 53 , randomedColors [ 2 ] , state_researched ) ;
7482: LD_INT 53
7484: PPUSH
7485: LD_EXP 42
7489: PUSH
7490: LD_INT 2
7492: ARRAY
7493: PPUSH
7494: LD_INT 2
7496: PPUSH
7497: CALL_OW 322
// SetTech ( 56 , randomedColors [ 2 ] , state_researched ) ;
7501: LD_INT 56
7503: PPUSH
7504: LD_EXP 42
7508: PUSH
7509: LD_INT 2
7511: ARRAY
7512: PPUSH
7513: LD_INT 2
7515: PPUSH
7516: CALL_OW 322
// SetTech ( 59 , randomedColors [ 2 ] , state_researched ) ;
7520: LD_INT 59
7522: PPUSH
7523: LD_EXP 42
7527: PUSH
7528: LD_INT 2
7530: ARRAY
7531: PPUSH
7532: LD_INT 2
7534: PPUSH
7535: CALL_OW 322
// SetTech ( 62 , randomedColors [ 2 ] , state_researched ) ;
7539: LD_INT 62
7541: PPUSH
7542: LD_EXP 42
7546: PUSH
7547: LD_INT 2
7549: ARRAY
7550: PPUSH
7551: LD_INT 2
7553: PPUSH
7554: CALL_OW 322
// SetTech ( 65 , randomedColors [ 2 ] , state_researched ) ;
7558: LD_INT 65
7560: PPUSH
7561: LD_EXP 42
7565: PUSH
7566: LD_INT 2
7568: ARRAY
7569: PPUSH
7570: LD_INT 2
7572: PPUSH
7573: CALL_OW 322
// SetTech ( 68 , randomedColors [ 2 ] , state_researched ) ;
7577: LD_INT 68
7579: PPUSH
7580: LD_EXP 42
7584: PUSH
7585: LD_INT 2
7587: ARRAY
7588: PPUSH
7589: LD_INT 2
7591: PPUSH
7592: CALL_OW 322
// end ; end ;
7596: LD_VAR 0 1
7600: RET
// export function MultiplayerRespawnInside ( side , nation , build , skill , class , count ) ; var i , l , un ; begin
7601: LD_INT 0
7603: PPUSH
7604: PPUSH
7605: PPUSH
7606: PPUSH
// for i = 1 to count do
7607: LD_ADDR_VAR 0 8
7611: PUSH
7612: DOUBLE
7613: LD_INT 1
7615: DEC
7616: ST_TO_ADDR
7617: LD_VAR 0 6
7621: PUSH
7622: FOR_TO
7623: IFFALSE 7767
// begin uc_side = side ;
7625: LD_ADDR_OWVAR 20
7629: PUSH
7630: LD_VAR 0 1
7634: ST_TO_ADDR
// uc_nation = nation ;
7635: LD_ADDR_OWVAR 21
7639: PUSH
7640: LD_VAR 0 2
7644: ST_TO_ADDR
// hc_gallery =  ;
7645: LD_ADDR_OWVAR 33
7649: PUSH
7650: LD_STRING 
7652: ST_TO_ADDR
// hc_name =  ;
7653: LD_ADDR_OWVAR 26
7657: PUSH
7658: LD_STRING 
7660: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
7661: LD_ADDR_OWVAR 29
7665: PUSH
7666: LD_INT 10
7668: PUSH
7669: LD_INT 10
7671: PUSH
7672: EMPTY
7673: LIST
7674: LIST
7675: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
7676: LD_ADDR_OWVAR 31
7680: PUSH
7681: LD_VAR 0 4
7685: PUSH
7686: LD_VAR 0 4
7690: PUSH
7691: LD_VAR 0 4
7695: PUSH
7696: LD_VAR 0 4
7700: PUSH
7701: EMPTY
7702: LIST
7703: LIST
7704: LIST
7705: LIST
7706: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7707: LD_ADDR_OWVAR 27
7711: PUSH
7712: LD_INT 1
7714: PPUSH
7715: LD_INT 2
7717: PPUSH
7718: CALL_OW 12
7722: ST_TO_ADDR
// hc_class = class ;
7723: LD_ADDR_OWVAR 28
7727: PUSH
7728: LD_VAR 0 5
7732: ST_TO_ADDR
// hc_importance = 0 ;
7733: LD_ADDR_OWVAR 32
7737: PUSH
7738: LD_INT 0
7740: ST_TO_ADDR
// un = CreateHuman ;
7741: LD_ADDR_VAR 0 10
7745: PUSH
7746: CALL_OW 44
7750: ST_TO_ADDR
// PlaceHumanInUnit ( un , build ) ;
7751: LD_VAR 0 10
7755: PPUSH
7756: LD_VAR 0 3
7760: PPUSH
7761: CALL_OW 52
// end ;
7765: GO 7622
7767: POP
7768: POP
// end ;
7769: LD_VAR 0 7
7773: RET
// export function ResAllTechs ( side , lab , nation ) ; var i , tech , cout ; begin
7774: LD_INT 0
7776: PPUSH
7777: PPUSH
7778: PPUSH
7779: PPUSH
// for i = 1 to 72 do
7780: LD_ADDR_VAR 0 5
7784: PUSH
7785: DOUBLE
7786: LD_INT 1
7788: DEC
7789: ST_TO_ADDR
7790: LD_INT 72
7792: PUSH
7793: FOR_TO
7794: IFFALSE 7852
// if GetTech ( i , side ) = state_enabled and TechNationAvailable ( i , nation ) = true then
7796: LD_VAR 0 5
7800: PPUSH
7801: LD_VAR 0 1
7805: PPUSH
7806: CALL_OW 321
7810: PUSH
7811: LD_INT 1
7813: EQUAL
7814: PUSH
7815: LD_VAR 0 5
7819: PPUSH
7820: LD_VAR 0 3
7824: PPUSH
7825: CALL_OW 482
7829: PUSH
7830: LD_INT 1
7832: EQUAL
7833: AND
7834: IFFALSE 7850
// AddComResearch ( lab , i ) ;
7836: LD_VAR 0 2
7840: PPUSH
7841: LD_VAR 0 5
7845: PPUSH
7846: CALL_OW 184
7850: GO 7793
7852: POP
7853: POP
// end ;
7854: LD_VAR 0 4
7858: RET
// export function DefendDepot ( side ) ; var i , j , tmpTab ; begin
7859: LD_INT 0
7861: PPUSH
7862: PPUSH
7863: PPUSH
7864: PPUSH
// AIDepotDest = 1 ;
7865: LD_ADDR_EXP 41
7869: PUSH
7870: LD_INT 1
7872: ST_TO_ADDR
// tmpTab = [ ] ;
7873: LD_ADDR_VAR 0 5
7877: PUSH
7878: EMPTY
7879: ST_TO_ADDR
// if FilterAllUnits ( [ [ f_side , side ] , [ f_btype , b_bunker ] ] ) > 0 then
7880: LD_INT 22
7882: PUSH
7883: LD_VAR 0 1
7887: PUSH
7888: EMPTY
7889: LIST
7890: LIST
7891: PUSH
7892: LD_INT 30
7894: PUSH
7895: LD_INT 32
7897: PUSH
7898: EMPTY
7899: LIST
7900: LIST
7901: PUSH
7902: EMPTY
7903: LIST
7904: LIST
7905: PPUSH
7906: CALL_OW 69
7910: PUSH
7911: LD_INT 0
7913: GREATER
7914: IFFALSE 7997
// begin for i in FilterAllUnits ( [ [ f_side , side ] , [ f_btype , b_bunker ] ] ) do
7916: LD_ADDR_VAR 0 3
7920: PUSH
7921: LD_INT 22
7923: PUSH
7924: LD_VAR 0 1
7928: PUSH
7929: EMPTY
7930: LIST
7931: LIST
7932: PUSH
7933: LD_INT 30
7935: PUSH
7936: LD_INT 32
7938: PUSH
7939: EMPTY
7940: LIST
7941: LIST
7942: PUSH
7943: EMPTY
7944: LIST
7945: LIST
7946: PPUSH
7947: CALL_OW 69
7951: PUSH
7952: FOR_IN
7953: IFFALSE 7995
// begin for j in UnitsInside ( i ) do
7955: LD_ADDR_VAR 0 4
7959: PUSH
7960: LD_VAR 0 3
7964: PPUSH
7965: CALL_OW 313
7969: PUSH
7970: FOR_IN
7971: IFFALSE 7991
// tmpTab = tmpTab ^ j ;
7973: LD_ADDR_VAR 0 5
7977: PUSH
7978: LD_VAR 0 5
7982: PUSH
7983: LD_VAR 0 4
7987: ADD
7988: ST_TO_ADDR
7989: GO 7970
7991: POP
7992: POP
// end ;
7993: GO 7952
7995: POP
7996: POP
// end ; for i in tmpTab do
7997: LD_ADDR_VAR 0 3
8001: PUSH
8002: LD_VAR 0 5
8006: PUSH
8007: FOR_IN
8008: IFFALSE 8037
// ComAgressiveMove ( i , GetX ( rudepot ) , GetY ( rudepot ) ) ;
8010: LD_VAR 0 3
8014: PPUSH
8015: LD_INT 52
8017: PPUSH
8018: CALL_OW 250
8022: PPUSH
8023: LD_INT 52
8025: PPUSH
8026: CALL_OW 251
8030: PPUSH
8031: CALL_OW 114
8035: GO 8007
8037: POP
8038: POP
// end ;
8039: LD_VAR 0 2
8043: RET
// export function IntBazooka ( side , targetSide ) ; var ta , c , i , list , filter ; begin
8044: LD_INT 0
8046: PPUSH
8047: PPUSH
8048: PPUSH
8049: PPUSH
8050: PPUSH
8051: PPUSH
// list := FilterAllUnits ( [ [ f_side , side ] , [ f_class , class_bazooker ] ] ) ;
8052: LD_ADDR_VAR 0 7
8056: PUSH
8057: LD_INT 22
8059: PUSH
8060: LD_VAR 0 1
8064: PUSH
8065: EMPTY
8066: LIST
8067: LIST
8068: PUSH
8069: LD_INT 25
8071: PUSH
8072: LD_INT 9
8074: PUSH
8075: EMPTY
8076: LIST
8077: LIST
8078: PUSH
8079: EMPTY
8080: LIST
8081: LIST
8082: PPUSH
8083: CALL_OW 69
8087: ST_TO_ADDR
// filter := FilterAllUnits ( [ [ f_side , targetSide ] , [ f_not , [ f_type , unit_building ] ] ] ) ;
8088: LD_ADDR_VAR 0 8
8092: PUSH
8093: LD_INT 22
8095: PUSH
8096: LD_VAR 0 2
8100: PUSH
8101: EMPTY
8102: LIST
8103: LIST
8104: PUSH
8105: LD_INT 3
8107: PUSH
8108: LD_INT 21
8110: PUSH
8111: LD_INT 3
8113: PUSH
8114: EMPTY
8115: LIST
8116: LIST
8117: PUSH
8118: EMPTY
8119: LIST
8120: LIST
8121: PUSH
8122: EMPTY
8123: LIST
8124: LIST
8125: PPUSH
8126: CALL_OW 69
8130: ST_TO_ADDR
// c := Rand ( 1 , 3 ) ;
8131: LD_ADDR_VAR 0 5
8135: PUSH
8136: LD_INT 1
8138: PPUSH
8139: LD_INT 3
8141: PPUSH
8142: CALL_OW 12
8146: ST_TO_ADDR
// for i = 1 to list do
8147: LD_ADDR_VAR 0 6
8151: PUSH
8152: DOUBLE
8153: LD_INT 1
8155: DEC
8156: ST_TO_ADDR
8157: LD_VAR 0 7
8161: PUSH
8162: FOR_TO
8163: IFFALSE 8365
// for ta in filter do
8165: LD_ADDR_VAR 0 4
8169: PUSH
8170: LD_VAR 0 8
8174: PUSH
8175: FOR_IN
8176: IFFALSE 8361
// begin if GetDistUnits ( list [ i ] , ta ) <= 15 then
8178: LD_VAR 0 7
8182: PUSH
8183: LD_VAR 0 6
8187: ARRAY
8188: PPUSH
8189: LD_VAR 0 4
8193: PPUSH
8194: CALL_OW 296
8198: PUSH
8199: LD_INT 15
8201: LESSEQUAL
8202: IFFALSE 8359
// begin case c of 1 :
8204: LD_VAR 0 5
8208: PUSH
8209: LD_INT 1
8211: DOUBLE
8212: EQUAL
8213: IFTRUE 8217
8215: GO 8255
8217: POP
// ComTimeShift ( list [ i ] , GetX ( ta ) , GetY ( ta ) ) ; 2 :
8218: LD_VAR 0 7
8222: PUSH
8223: LD_VAR 0 6
8227: ARRAY
8228: PPUSH
8229: LD_VAR 0 4
8233: PPUSH
8234: CALL_OW 250
8238: PPUSH
8239: LD_VAR 0 4
8243: PPUSH
8244: CALL_OW 251
8248: PPUSH
8249: CALL_OW 154
8253: GO 8359
8255: LD_INT 2
8257: DOUBLE
8258: EQUAL
8259: IFTRUE 8263
8261: GO 8327
8263: POP
// ComSpaceShift ( list [ i ] , GetX ( ta ) + Rand ( - 1 , 1 ) , GetY ( ta ) + Rand ( - 1 , 1 ) ) ; 3 :
8264: LD_VAR 0 7
8268: PUSH
8269: LD_VAR 0 6
8273: ARRAY
8274: PPUSH
8275: LD_VAR 0 4
8279: PPUSH
8280: CALL_OW 250
8284: PUSH
8285: LD_INT 1
8287: NEG
8288: PPUSH
8289: LD_INT 1
8291: PPUSH
8292: CALL_OW 12
8296: PLUS
8297: PPUSH
8298: LD_VAR 0 4
8302: PPUSH
8303: CALL_OW 251
8307: PUSH
8308: LD_INT 1
8310: NEG
8311: PPUSH
8312: LD_INT 1
8314: PPUSH
8315: CALL_OW 12
8319: PLUS
8320: PPUSH
8321: CALL_OW 153
8325: GO 8359
8327: LD_INT 3
8329: DOUBLE
8330: EQUAL
8331: IFTRUE 8335
8333: GO 8358
8335: POP
// ComAttackUnit ( list [ i ] , ta ) ; end ;
8336: LD_VAR 0 7
8340: PUSH
8341: LD_VAR 0 6
8345: ARRAY
8346: PPUSH
8347: LD_VAR 0 4
8351: PPUSH
8352: CALL_OW 115
8356: GO 8359
8358: POP
// end ; end ;
8359: GO 8175
8361: POP
8362: POP
8363: GO 8162
8365: POP
8366: POP
// end ;
8367: LD_VAR 0 3
8371: RET
// export function EnterBunkerOrBarrack ( side , area ) ; var i , j , soldiers_list , turretList , temp , barrackList , insideUnits ; begin
8372: LD_INT 0
8374: PPUSH
8375: PPUSH
8376: PPUSH
8377: PPUSH
8378: PPUSH
8379: PPUSH
8380: PPUSH
8381: PPUSH
// soldiers_list = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_outside ] , [ f_lives , 700 ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] ] ) ;
8382: LD_ADDR_VAR 0 6
8386: PUSH
8387: LD_VAR 0 2
8391: PPUSH
8392: LD_INT 22
8394: PUSH
8395: LD_VAR 0 1
8399: PUSH
8400: EMPTY
8401: LIST
8402: LIST
8403: PUSH
8404: LD_INT 56
8406: PUSH
8407: EMPTY
8408: LIST
8409: PUSH
8410: LD_INT 24
8412: PUSH
8413: LD_INT 700
8415: PUSH
8416: EMPTY
8417: LIST
8418: LIST
8419: PUSH
8420: LD_INT 2
8422: PUSH
8423: LD_INT 25
8425: PUSH
8426: LD_INT 1
8428: PUSH
8429: EMPTY
8430: LIST
8431: LIST
8432: PUSH
8433: LD_INT 25
8435: PUSH
8436: LD_INT 5
8438: PUSH
8439: EMPTY
8440: LIST
8441: LIST
8442: PUSH
8443: LD_INT 25
8445: PUSH
8446: LD_INT 8
8448: PUSH
8449: EMPTY
8450: LIST
8451: LIST
8452: PUSH
8453: LD_INT 25
8455: PUSH
8456: LD_INT 9
8458: PUSH
8459: EMPTY
8460: LIST
8461: LIST
8462: PUSH
8463: EMPTY
8464: LIST
8465: LIST
8466: LIST
8467: LIST
8468: LIST
8469: PUSH
8470: EMPTY
8471: LIST
8472: LIST
8473: LIST
8474: LIST
8475: PPUSH
8476: CALL_OW 70
8480: ST_TO_ADDR
// turretList = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_btype , b_bunker ] , [ f_empty ] , [ f_lives , 251 ] ] ) ;
8481: LD_ADDR_VAR 0 7
8485: PUSH
8486: LD_VAR 0 2
8490: PPUSH
8491: LD_INT 22
8493: PUSH
8494: LD_VAR 0 1
8498: PUSH
8499: EMPTY
8500: LIST
8501: LIST
8502: PUSH
8503: LD_INT 30
8505: PUSH
8506: LD_INT 32
8508: PUSH
8509: EMPTY
8510: LIST
8511: LIST
8512: PUSH
8513: LD_INT 58
8515: PUSH
8516: EMPTY
8517: LIST
8518: PUSH
8519: LD_INT 24
8521: PUSH
8522: LD_INT 251
8524: PUSH
8525: EMPTY
8526: LIST
8527: LIST
8528: PUSH
8529: EMPTY
8530: LIST
8531: LIST
8532: LIST
8533: LIST
8534: PPUSH
8535: CALL_OW 70
8539: ST_TO_ADDR
// barrackList = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_or , [ f_btype , 4 ] , [ f_btype , 5 ] ] , [ f_lives , 251 ] ] ) ;
8540: LD_ADDR_VAR 0 9
8544: PUSH
8545: LD_VAR 0 2
8549: PPUSH
8550: LD_INT 22
8552: PUSH
8553: LD_VAR 0 1
8557: PUSH
8558: EMPTY
8559: LIST
8560: LIST
8561: PUSH
8562: LD_INT 2
8564: PUSH
8565: LD_INT 30
8567: PUSH
8568: LD_INT 4
8570: PUSH
8571: EMPTY
8572: LIST
8573: LIST
8574: PUSH
8575: LD_INT 30
8577: PUSH
8578: LD_INT 5
8580: PUSH
8581: EMPTY
8582: LIST
8583: LIST
8584: PUSH
8585: EMPTY
8586: LIST
8587: LIST
8588: LIST
8589: PUSH
8590: LD_INT 24
8592: PUSH
8593: LD_INT 251
8595: PUSH
8596: EMPTY
8597: LIST
8598: LIST
8599: PUSH
8600: EMPTY
8601: LIST
8602: LIST
8603: LIST
8604: PPUSH
8605: CALL_OW 70
8609: ST_TO_ADDR
// if barrackList > 0 then
8610: LD_VAR 0 9
8614: PUSH
8615: LD_INT 0
8617: GREATER
8618: IFFALSE 8792
// begin if turretList = 0 then
8620: LD_VAR 0 7
8624: PUSH
8625: LD_INT 0
8627: EQUAL
8628: IFFALSE 8678
// begin ComEnterUnit ( UnitFilter ( soldiers_list , [ f_not , [ f_hastask ] ] ) , barrackList [ Rand ( 1 , barrackList ) ] ) ;
8630: LD_VAR 0 6
8634: PPUSH
8635: LD_INT 3
8637: PUSH
8638: LD_INT 60
8640: PUSH
8641: EMPTY
8642: LIST
8643: PUSH
8644: EMPTY
8645: LIST
8646: LIST
8647: PPUSH
8648: CALL_OW 72
8652: PPUSH
8653: LD_VAR 0 9
8657: PUSH
8658: LD_INT 1
8660: PPUSH
8661: LD_VAR 0 9
8665: PPUSH
8666: CALL_OW 12
8670: ARRAY
8671: PPUSH
8672: CALL_OW 120
// end else
8676: GO 8792
// begin for i in barrackList do
8678: LD_ADDR_VAR 0 4
8682: PUSH
8683: LD_VAR 0 9
8687: PUSH
8688: FOR_IN
8689: IFFALSE 8790
// begin insideUnits = UnitsInside ( i ) ;
8691: LD_ADDR_VAR 0 10
8695: PUSH
8696: LD_VAR 0 4
8700: PPUSH
8701: CALL_OW 313
8705: ST_TO_ADDR
// if insideUnits > 0 then
8706: LD_VAR 0 10
8710: PUSH
8711: LD_INT 0
8713: GREATER
8714: IFFALSE 8738
// ComEnterUnit ( insideUnits [ 1 ] , turretList [ 1 ] ) ;
8716: LD_VAR 0 10
8720: PUSH
8721: LD_INT 1
8723: ARRAY
8724: PPUSH
8725: LD_VAR 0 7
8729: PUSH
8730: LD_INT 1
8732: ARRAY
8733: PPUSH
8734: CALL_OW 120
// if soldiers_list > 0 then
8738: LD_VAR 0 6
8742: PUSH
8743: LD_INT 0
8745: GREATER
8746: IFFALSE 8788
// ComEnterUnit ( UnitFilter ( soldiers_list [ 1 ] , [ f_not , [ f_hastask ] ] ) , turretList [ 1 ] ) ;
8748: LD_VAR 0 6
8752: PUSH
8753: LD_INT 1
8755: ARRAY
8756: PPUSH
8757: LD_INT 3
8759: PUSH
8760: LD_INT 60
8762: PUSH
8763: EMPTY
8764: LIST
8765: PUSH
8766: EMPTY
8767: LIST
8768: LIST
8769: PPUSH
8770: CALL_OW 72
8774: PPUSH
8775: LD_VAR 0 7
8779: PUSH
8780: LD_INT 1
8782: ARRAY
8783: PPUSH
8784: CALL_OW 120
// end ;
8788: GO 8688
8790: POP
8791: POP
// end ; end ; end ;
8792: LD_VAR 0 3
8796: RET
// export function RepairAndRebuildBase ( side , depot , baseArea , destroyedBuildings ) ; var i , engineerList , damageBuildings , nearDepot ; begin
8797: LD_INT 0
8799: PPUSH
8800: PPUSH
8801: PPUSH
8802: PPUSH
8803: PPUSH
// engineerList = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 2 ] ] ) ;
8804: LD_ADDR_VAR 0 7
8808: PUSH
8809: LD_INT 22
8811: PUSH
8812: LD_VAR 0 1
8816: PUSH
8817: EMPTY
8818: LIST
8819: LIST
8820: PUSH
8821: LD_INT 25
8823: PUSH
8824: LD_INT 2
8826: PUSH
8827: EMPTY
8828: LIST
8829: LIST
8830: PUSH
8831: EMPTY
8832: LIST
8833: LIST
8834: PPUSH
8835: CALL_OW 69
8839: ST_TO_ADDR
// damageBuildings = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
8840: LD_ADDR_VAR 0 8
8844: PUSH
8845: LD_VAR 0 3
8849: PPUSH
8850: LD_INT 22
8852: PUSH
8853: LD_VAR 0 1
8857: PUSH
8858: EMPTY
8859: LIST
8860: LIST
8861: PUSH
8862: LD_INT 21
8864: PUSH
8865: LD_INT 3
8867: PUSH
8868: EMPTY
8869: LIST
8870: LIST
8871: PUSH
8872: LD_INT 3
8874: PUSH
8875: LD_INT 24
8877: PUSH
8878: LD_INT 1000
8880: PUSH
8881: EMPTY
8882: LIST
8883: LIST
8884: PUSH
8885: EMPTY
8886: LIST
8887: LIST
8888: PUSH
8889: EMPTY
8890: LIST
8891: LIST
8892: LIST
8893: PPUSH
8894: CALL_OW 70
8898: ST_TO_ADDR
// if damageBuildings > 0 and engineerList > 0 then
8899: LD_VAR 0 8
8903: PUSH
8904: LD_INT 0
8906: GREATER
8907: PUSH
8908: LD_VAR 0 7
8912: PUSH
8913: LD_INT 0
8915: GREATER
8916: AND
8917: IFFALSE 8975
// begin ComExitBuilding ( UnitFilter ( engineerList , [ f_inside ] ) ) ;
8919: LD_VAR 0 7
8923: PPUSH
8924: LD_INT 54
8926: PUSH
8927: EMPTY
8928: LIST
8929: PPUSH
8930: CALL_OW 72
8934: PPUSH
8935: CALL_OW 122
// ComRepairBuilding ( UnitFilter ( engineerList , [ f_not , [ f_inside ] ] ) , damageBuildings [ 1 ] ) ;
8939: LD_VAR 0 7
8943: PPUSH
8944: LD_INT 3
8946: PUSH
8947: LD_INT 54
8949: PUSH
8950: EMPTY
8951: LIST
8952: PUSH
8953: EMPTY
8954: LIST
8955: LIST
8956: PPUSH
8957: CALL_OW 72
8961: PPUSH
8962: LD_VAR 0 8
8966: PUSH
8967: LD_INT 1
8969: ARRAY
8970: PPUSH
8971: CALL_OW 130
// end ; if damageBuildings = 0 and engineerList > 0 and destroyedBuildings > 0 then
8975: LD_VAR 0 8
8979: PUSH
8980: LD_INT 0
8982: EQUAL
8983: PUSH
8984: LD_VAR 0 7
8988: PUSH
8989: LD_INT 0
8991: GREATER
8992: AND
8993: PUSH
8994: LD_VAR 0 4
8998: PUSH
8999: LD_INT 0
9001: GREATER
9002: AND
9003: IFFALSE 9088
// begin ComExitBuilding ( UnitFilter ( engineerList , [ f_inside ] ) ) ;
9005: LD_VAR 0 7
9009: PPUSH
9010: LD_INT 54
9012: PUSH
9013: EMPTY
9014: LIST
9015: PPUSH
9016: CALL_OW 72
9020: PPUSH
9021: CALL_OW 122
// ComBuild ( UnitFilter ( engineerList , [ f_not , [ f_inside ] ] ) , destroyedBuildings [ 1 ] , destroyedBuildings [ 2 ] , destroyedBuildings [ 3 ] , destroyedBuildings [ 4 ] ) ;
9025: LD_VAR 0 7
9029: PPUSH
9030: LD_INT 3
9032: PUSH
9033: LD_INT 54
9035: PUSH
9036: EMPTY
9037: LIST
9038: PUSH
9039: EMPTY
9040: LIST
9041: LIST
9042: PPUSH
9043: CALL_OW 72
9047: PPUSH
9048: LD_VAR 0 4
9052: PUSH
9053: LD_INT 1
9055: ARRAY
9056: PPUSH
9057: LD_VAR 0 4
9061: PUSH
9062: LD_INT 2
9064: ARRAY
9065: PPUSH
9066: LD_VAR 0 4
9070: PUSH
9071: LD_INT 3
9073: ARRAY
9074: PPUSH
9075: LD_VAR 0 4
9079: PUSH
9080: LD_INT 4
9082: ARRAY
9083: PPUSH
9084: CALL_OW 145
// end ; if damageBuildings = 0 and engineerList > 0 and destroyedBuildings = 0 then
9088: LD_VAR 0 8
9092: PUSH
9093: LD_INT 0
9095: EQUAL
9096: PUSH
9097: LD_VAR 0 7
9101: PUSH
9102: LD_INT 0
9104: GREATER
9105: AND
9106: PUSH
9107: LD_VAR 0 4
9111: PUSH
9112: LD_INT 0
9114: EQUAL
9115: AND
9116: IFFALSE 9150
// ComEnterUnit ( UnitFilter ( engineerList , [ f_not , [ f_inside ] ] ) , depot ) ;
9118: LD_VAR 0 7
9122: PPUSH
9123: LD_INT 3
9125: PUSH
9126: LD_INT 54
9128: PUSH
9129: EMPTY
9130: LIST
9131: PUSH
9132: EMPTY
9133: LIST
9134: LIST
9135: PPUSH
9136: CALL_OW 72
9140: PPUSH
9141: LD_VAR 0 2
9145: PPUSH
9146: CALL_OW 120
// end ;
9150: LD_VAR 0 5
9154: RET
// export function HealUnitInBase ( side , healArea , baseArea , build ) ; var sci_list , sci_listOutside , i , j , damageUnits , unitsToHeal , tmp , rnd ; begin
9155: LD_INT 0
9157: PPUSH
9158: PPUSH
9159: PPUSH
9160: PPUSH
9161: PPUSH
9162: PPUSH
9163: PPUSH
9164: PPUSH
9165: PPUSH
// sci_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] , [ f_nation , 2 ] , [ f_lives , 251 ] ] ) ;
9166: LD_ADDR_VAR 0 6
9170: PUSH
9171: LD_INT 22
9173: PUSH
9174: LD_VAR 0 1
9178: PUSH
9179: EMPTY
9180: LIST
9181: LIST
9182: PUSH
9183: LD_INT 25
9185: PUSH
9186: LD_INT 4
9188: PUSH
9189: EMPTY
9190: LIST
9191: LIST
9192: PUSH
9193: LD_INT 23
9195: PUSH
9196: LD_INT 2
9198: PUSH
9199: EMPTY
9200: LIST
9201: LIST
9202: PUSH
9203: LD_INT 24
9205: PUSH
9206: LD_INT 251
9208: PUSH
9209: EMPTY
9210: LIST
9211: LIST
9212: PUSH
9213: EMPTY
9214: LIST
9215: LIST
9216: LIST
9217: LIST
9218: PPUSH
9219: CALL_OW 69
9223: ST_TO_ADDR
// sci_listOutside = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_nation , 2 ] , [ f_class , 4 ] , [ f_ok ] ] ) ;
9224: LD_ADDR_VAR 0 7
9228: PUSH
9229: LD_VAR 0 3
9233: PPUSH
9234: LD_INT 22
9236: PUSH
9237: LD_VAR 0 1
9241: PUSH
9242: EMPTY
9243: LIST
9244: LIST
9245: PUSH
9246: LD_INT 23
9248: PUSH
9249: LD_INT 2
9251: PUSH
9252: EMPTY
9253: LIST
9254: LIST
9255: PUSH
9256: LD_INT 25
9258: PUSH
9259: LD_INT 4
9261: PUSH
9262: EMPTY
9263: LIST
9264: LIST
9265: PUSH
9266: LD_INT 50
9268: PUSH
9269: EMPTY
9270: LIST
9271: PUSH
9272: EMPTY
9273: LIST
9274: LIST
9275: LIST
9276: LIST
9277: PPUSH
9278: CALL_OW 70
9282: ST_TO_ADDR
// damageUnits = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_class , 3 ] ] , [ f_not , [ f_lives , 750 ] ] ] ) ;
9283: LD_ADDR_VAR 0 10
9287: PUSH
9288: LD_VAR 0 3
9292: PPUSH
9293: LD_INT 22
9295: PUSH
9296: LD_VAR 0 1
9300: PUSH
9301: EMPTY
9302: LIST
9303: LIST
9304: PUSH
9305: LD_INT 21
9307: PUSH
9308: LD_INT 1
9310: PUSH
9311: EMPTY
9312: LIST
9313: LIST
9314: PUSH
9315: LD_INT 3
9317: PUSH
9318: LD_INT 25
9320: PUSH
9321: LD_INT 3
9323: PUSH
9324: EMPTY
9325: LIST
9326: LIST
9327: PUSH
9328: EMPTY
9329: LIST
9330: LIST
9331: PUSH
9332: LD_INT 3
9334: PUSH
9335: LD_INT 24
9337: PUSH
9338: LD_INT 750
9340: PUSH
9341: EMPTY
9342: LIST
9343: LIST
9344: PUSH
9345: EMPTY
9346: LIST
9347: LIST
9348: PUSH
9349: EMPTY
9350: LIST
9351: LIST
9352: LIST
9353: LIST
9354: PPUSH
9355: CALL_OW 70
9359: ST_TO_ADDR
// unitsToHeal = FilterUnitsInArea ( healArea , [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_class , 3 ] ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
9360: LD_ADDR_VAR 0 11
9364: PUSH
9365: LD_VAR 0 2
9369: PPUSH
9370: LD_INT 22
9372: PUSH
9373: LD_VAR 0 1
9377: PUSH
9378: EMPTY
9379: LIST
9380: LIST
9381: PUSH
9382: LD_INT 21
9384: PUSH
9385: LD_INT 1
9387: PUSH
9388: EMPTY
9389: LIST
9390: LIST
9391: PUSH
9392: LD_INT 3
9394: PUSH
9395: LD_INT 25
9397: PUSH
9398: LD_INT 3
9400: PUSH
9401: EMPTY
9402: LIST
9403: LIST
9404: PUSH
9405: EMPTY
9406: LIST
9407: LIST
9408: PUSH
9409: LD_INT 3
9411: PUSH
9412: LD_INT 24
9414: PUSH
9415: LD_INT 1000
9417: PUSH
9418: EMPTY
9419: LIST
9420: LIST
9421: PUSH
9422: EMPTY
9423: LIST
9424: LIST
9425: PUSH
9426: EMPTY
9427: LIST
9428: LIST
9429: LIST
9430: LIST
9431: PPUSH
9432: CALL_OW 70
9436: ST_TO_ADDR
// if not damageUnits and not unitsToHeal and not sci_list then
9437: LD_VAR 0 10
9441: NOT
9442: PUSH
9443: LD_VAR 0 11
9447: NOT
9448: AND
9449: PUSH
9450: LD_VAR 0 6
9454: NOT
9455: AND
9456: IFFALSE 9460
// exit ;
9458: GO 9694
// if damageUnits > 0 and sci_list > 0 then
9460: LD_VAR 0 10
9464: PUSH
9465: LD_INT 0
9467: GREATER
9468: PUSH
9469: LD_VAR 0 6
9473: PUSH
9474: LD_INT 0
9476: GREATER
9477: AND
9478: IFFALSE 9494
// ComMoveToArea ( damageUnits , healArea ) ;
9480: LD_VAR 0 10
9484: PPUSH
9485: LD_VAR 0 2
9489: PPUSH
9490: CALL_OW 113
// if unitsToHeal > 0 and sci_list > 0 then
9494: LD_VAR 0 11
9498: PUSH
9499: LD_INT 0
9501: GREATER
9502: PUSH
9503: LD_VAR 0 6
9507: PUSH
9508: LD_INT 0
9510: GREATER
9511: AND
9512: IFFALSE 9523
// ComExitBuilding ( sci_list ) ;
9514: LD_VAR 0 6
9518: PPUSH
9519: CALL_OW 122
// if unitsToHeal > 0 and sci_listOutside > 0 then
9523: LD_VAR 0 11
9527: PUSH
9528: LD_INT 0
9530: GREATER
9531: PUSH
9532: LD_VAR 0 7
9536: PUSH
9537: LD_INT 0
9539: GREATER
9540: AND
9541: IFFALSE 9561
// ComHeal ( sci_listOutside , unitsToHeal [ 1 ] ) ;
9543: LD_VAR 0 7
9547: PPUSH
9548: LD_VAR 0 11
9552: PUSH
9553: LD_INT 1
9555: ARRAY
9556: PPUSH
9557: CALL_OW 128
// if damageUnits = 0 and unitsToHeal = 0 and sci_listOutside > 0 then
9561: LD_VAR 0 10
9565: PUSH
9566: LD_INT 0
9568: EQUAL
9569: PUSH
9570: LD_VAR 0 11
9574: PUSH
9575: LD_INT 0
9577: EQUAL
9578: AND
9579: PUSH
9580: LD_VAR 0 7
9584: PUSH
9585: LD_INT 0
9587: GREATER
9588: AND
9589: IFFALSE 9694
// begin tmp = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_building ] , [ f_btype , b_lab_full ] ] ) ;
9591: LD_ADDR_VAR 0 12
9595: PUSH
9596: LD_INT 22
9598: PUSH
9599: LD_VAR 0 1
9603: PUSH
9604: EMPTY
9605: LIST
9606: LIST
9607: PUSH
9608: LD_INT 21
9610: PUSH
9611: LD_INT 3
9613: PUSH
9614: EMPTY
9615: LIST
9616: LIST
9617: PUSH
9618: LD_INT 30
9620: PUSH
9621: LD_INT 8
9623: PUSH
9624: EMPTY
9625: LIST
9626: LIST
9627: PUSH
9628: EMPTY
9629: LIST
9630: LIST
9631: LIST
9632: PPUSH
9633: CALL_OW 69
9637: ST_TO_ADDR
// rnd = rand ( 1 , tmp ) ;
9638: LD_ADDR_VAR 0 13
9642: PUSH
9643: LD_INT 1
9645: PPUSH
9646: LD_VAR 0 12
9650: PPUSH
9651: CALL_OW 12
9655: ST_TO_ADDR
// ComEnterUnit ( UnitFilter ( sci_listOutside , [ f_not , [ f_hastask ] ] ) , tmp [ rnd ] ) ;
9656: LD_VAR 0 7
9660: PPUSH
9661: LD_INT 3
9663: PUSH
9664: LD_INT 60
9666: PUSH
9667: EMPTY
9668: LIST
9669: PUSH
9670: EMPTY
9671: LIST
9672: LIST
9673: PPUSH
9674: CALL_OW 72
9678: PPUSH
9679: LD_VAR 0 12
9683: PUSH
9684: LD_VAR 0 13
9688: ARRAY
9689: PPUSH
9690: CALL_OW 120
// end ; end ;
9694: LD_VAR 0 5
9698: RET
// export function BuildingVehicleEnemy ( fabric , vehCount , weaponTab , engine , control , chassis ) ; var i , weapon ; begin
9699: LD_INT 0
9701: PPUSH
9702: PPUSH
9703: PPUSH
// for i = 1 to vehCount do
9704: LD_ADDR_VAR 0 8
9708: PUSH
9709: DOUBLE
9710: LD_INT 1
9712: DEC
9713: ST_TO_ADDR
9714: LD_VAR 0 2
9718: PUSH
9719: FOR_TO
9720: IFFALSE 9767
// AddComConstruct ( fabric , chassis , engine , control , weaponTab [ Rand ( 1 , weaponTab ) ] ) ;
9722: LD_VAR 0 1
9726: PPUSH
9727: LD_VAR 0 6
9731: PPUSH
9732: LD_VAR 0 4
9736: PPUSH
9737: LD_VAR 0 5
9741: PPUSH
9742: LD_VAR 0 3
9746: PUSH
9747: LD_INT 1
9749: PPUSH
9750: LD_VAR 0 3
9754: PPUSH
9755: CALL_OW 12
9759: ARRAY
9760: PPUSH
9761: CALL_OW 185
9765: GO 9719
9767: POP
9768: POP
// end ;
9769: LD_VAR 0 7
9773: RET
// export function EnemyVehicleAttack ( side ) ; var i , tmp , target1 , target2 ; begin
9774: LD_INT 0
9776: PPUSH
9777: PPUSH
9778: PPUSH
9779: PPUSH
9780: PPUSH
// repeat wait ( 0 0$1 ) ;
9781: LD_INT 35
9783: PPUSH
9784: CALL_OW 67
// if FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) > 0 then
9788: LD_INT 22
9790: PUSH
9791: LD_VAR 0 1
9795: PUSH
9796: EMPTY
9797: LIST
9798: LIST
9799: PUSH
9800: LD_INT 21
9802: PUSH
9803: LD_INT 2
9805: PUSH
9806: EMPTY
9807: LIST
9808: LIST
9809: PUSH
9810: EMPTY
9811: LIST
9812: LIST
9813: PPUSH
9814: CALL_OW 69
9818: PUSH
9819: LD_INT 0
9821: GREATER
9822: IFFALSE 10046
// begin for i in FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) do
9824: LD_ADDR_VAR 0 3
9828: PUSH
9829: LD_INT 22
9831: PUSH
9832: LD_VAR 0 1
9836: PUSH
9837: EMPTY
9838: LIST
9839: LIST
9840: PUSH
9841: LD_INT 21
9843: PUSH
9844: LD_INT 2
9846: PUSH
9847: EMPTY
9848: LIST
9849: LIST
9850: PUSH
9851: EMPTY
9852: LIST
9853: LIST
9854: PPUSH
9855: CALL_OW 69
9859: PUSH
9860: FOR_IN
9861: IFFALSE 10044
// begin wait ( 0 0$1 ) ;
9863: LD_INT 35
9865: PPUSH
9866: CALL_OW 67
// target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
9870: LD_ADDR_VAR 0 5
9874: PUSH
9875: LD_INT 81
9877: PUSH
9878: LD_VAR 0 1
9882: PUSH
9883: EMPTY
9884: LIST
9885: LIST
9886: PPUSH
9887: CALL_OW 69
9891: PPUSH
9892: LD_VAR 0 3
9896: PPUSH
9897: CALL_OW 74
9901: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
9902: LD_ADDR_VAR 0 6
9906: PUSH
9907: LD_INT 81
9909: PUSH
9910: LD_VAR 0 1
9914: PUSH
9915: EMPTY
9916: LIST
9917: LIST
9918: PUSH
9919: LD_INT 2
9921: PUSH
9922: LD_INT 59
9924: PUSH
9925: EMPTY
9926: LIST
9927: PUSH
9928: LD_INT 21
9930: PUSH
9931: LD_INT 1
9933: PUSH
9934: EMPTY
9935: LIST
9936: LIST
9937: PUSH
9938: LD_INT 21
9940: PUSH
9941: LD_INT 2
9943: PUSH
9944: EMPTY
9945: LIST
9946: LIST
9947: PUSH
9948: EMPTY
9949: LIST
9950: LIST
9951: LIST
9952: LIST
9953: PUSH
9954: EMPTY
9955: LIST
9956: LIST
9957: PUSH
9958: EMPTY
9959: LIST
9960: PPUSH
9961: CALL_OW 69
9965: PPUSH
9966: LD_VAR 0 3
9970: PPUSH
9971: CALL_OW 74
9975: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
9976: LD_VAR 0 3
9980: PPUSH
9981: LD_VAR 0 5
9985: PPUSH
9986: CALL_OW 296
9990: PUSH
9991: LD_INT 8
9993: PLUS
9994: PUSH
9995: LD_VAR 0 3
9999: PPUSH
10000: LD_VAR 0 6
10004: PPUSH
10005: CALL_OW 296
10009: LESS
10010: IFFALSE 10028
// begin ComAttackUnit ( i , target1 ) ;
10012: LD_VAR 0 3
10016: PPUSH
10017: LD_VAR 0 5
10021: PPUSH
10022: CALL_OW 115
// end else
10026: GO 10042
// begin ComAttackUnit ( i , target2 ) ;
10028: LD_VAR 0 3
10032: PPUSH
10033: LD_VAR 0 6
10037: PPUSH
10038: CALL_OW 115
// end ; end ;
10042: GO 9860
10044: POP
10045: POP
// end ; until FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) = 0 ;
10046: LD_INT 22
10048: PUSH
10049: LD_VAR 0 1
10053: PUSH
10054: EMPTY
10055: LIST
10056: LIST
10057: PUSH
10058: LD_INT 21
10060: PUSH
10061: LD_INT 2
10063: PUSH
10064: EMPTY
10065: LIST
10066: LIST
10067: PUSH
10068: EMPTY
10069: LIST
10070: LIST
10071: PPUSH
10072: CALL_OW 69
10076: PUSH
10077: LD_INT 0
10079: EQUAL
10080: IFFALSE 9781
// end ;
10082: LD_VAR 0 2
10086: RET
// export function RespawnAttackVehicle ( area , side , vehCount , mehskill , nation , vehEngine , vehControl , RUWeapons , ARWeapons , AMWeapon , targetSide ) ; var i , j , un , veh , ruChassisTab , arChassisTab , amChassisTab , vehicleOK_list , target1 , target2 ; begin
10087: LD_INT 0
10089: PPUSH
10090: PPUSH
10091: PPUSH
10092: PPUSH
10093: PPUSH
10094: PPUSH
10095: PPUSH
10096: PPUSH
10097: PPUSH
10098: PPUSH
10099: PPUSH
// amChassisTab = [ ] ;
10100: LD_ADDR_VAR 0 19
10104: PUSH
10105: EMPTY
10106: ST_TO_ADDR
// arChassisTab = [ ] ;
10107: LD_ADDR_VAR 0 18
10111: PUSH
10112: EMPTY
10113: ST_TO_ADDR
// ruChassisTab = [ ] ;
10114: LD_ADDR_VAR 0 17
10118: PUSH
10119: EMPTY
10120: ST_TO_ADDR
// repeat wait ( 0 0$01 ) ;
10121: LD_INT 35
10123: PPUSH
10124: CALL_OW 67
// if nation = 1 then
10128: LD_VAR 0 5
10132: PUSH
10133: LD_INT 1
10135: EQUAL
10136: IFFALSE 10630
// begin uc_side = side ;
10138: LD_ADDR_OWVAR 20
10142: PUSH
10143: LD_VAR 0 2
10147: ST_TO_ADDR
// uc_nation = nation ;
10148: LD_ADDR_OWVAR 21
10152: PUSH
10153: LD_VAR 0 5
10157: ST_TO_ADDR
// vc_engine = vehengine ;
10158: LD_ADDR_OWVAR 39
10162: PUSH
10163: LD_VAR 0 6
10167: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
10168: LD_ADDR_OWVAR 38
10172: PUSH
10173: LD_VAR 0 7
10177: PUSH
10178: LD_INT 1
10180: PPUSH
10181: LD_VAR 0 7
10185: PPUSH
10186: CALL_OW 12
10190: ARRAY
10191: ST_TO_ADDR
// vc_weapon = AMWeapon [ Rand ( 1 , AMWeapon ) ] ;
10192: LD_ADDR_OWVAR 40
10196: PUSH
10197: LD_VAR 0 10
10201: PUSH
10202: LD_INT 1
10204: PPUSH
10205: LD_VAR 0 10
10209: PPUSH
10210: CALL_OW 12
10214: ARRAY
10215: ST_TO_ADDR
// if vc_weapon = 2 or vc_weapon = 3 then
10216: LD_OWVAR 40
10220: PUSH
10221: LD_INT 2
10223: EQUAL
10224: PUSH
10225: LD_OWVAR 40
10229: PUSH
10230: LD_INT 3
10232: EQUAL
10233: OR
10234: IFFALSE 10287
// begin amChassisTab = [ 1 , 2 , 3 , 4 , 5 ] ;
10236: LD_ADDR_VAR 0 19
10240: PUSH
10241: LD_INT 1
10243: PUSH
10244: LD_INT 2
10246: PUSH
10247: LD_INT 3
10249: PUSH
10250: LD_INT 4
10252: PUSH
10253: LD_INT 5
10255: PUSH
10256: EMPTY
10257: LIST
10258: LIST
10259: LIST
10260: LIST
10261: LIST
10262: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
10263: LD_ADDR_OWVAR 37
10267: PUSH
10268: LD_VAR 0 19
10272: PUSH
10273: LD_INT 1
10275: PPUSH
10276: LD_VAR 0 19
10280: PPUSH
10281: CALL_OW 12
10285: ARRAY
10286: ST_TO_ADDR
// end ; if vc_weapon = 4 or vc_weapon = 5 or vc_weapon = 9 or vc_weapon = 11 or vc_weapon = 7 then
10287: LD_OWVAR 40
10291: PUSH
10292: LD_INT 4
10294: EQUAL
10295: PUSH
10296: LD_OWVAR 40
10300: PUSH
10301: LD_INT 5
10303: EQUAL
10304: OR
10305: PUSH
10306: LD_OWVAR 40
10310: PUSH
10311: LD_INT 9
10313: EQUAL
10314: OR
10315: PUSH
10316: LD_OWVAR 40
10320: PUSH
10321: LD_INT 11
10323: EQUAL
10324: OR
10325: PUSH
10326: LD_OWVAR 40
10330: PUSH
10331: LD_INT 7
10333: EQUAL
10334: OR
10335: IFFALSE 10384
// begin amChassisTab = [ 2 , 3 , 4 , 5 ] ;
10337: LD_ADDR_VAR 0 19
10341: PUSH
10342: LD_INT 2
10344: PUSH
10345: LD_INT 3
10347: PUSH
10348: LD_INT 4
10350: PUSH
10351: LD_INT 5
10353: PUSH
10354: EMPTY
10355: LIST
10356: LIST
10357: LIST
10358: LIST
10359: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
10360: LD_ADDR_OWVAR 37
10364: PUSH
10365: LD_VAR 0 19
10369: PUSH
10370: LD_INT 1
10372: PPUSH
10373: LD_VAR 0 19
10377: PPUSH
10378: CALL_OW 12
10382: ARRAY
10383: ST_TO_ADDR
// end ; if vc_weapon = 8 or vc_weapon = 6 or vc_weapon = 10 then
10384: LD_OWVAR 40
10388: PUSH
10389: LD_INT 8
10391: EQUAL
10392: PUSH
10393: LD_OWVAR 40
10397: PUSH
10398: LD_INT 6
10400: EQUAL
10401: OR
10402: PUSH
10403: LD_OWVAR 40
10407: PUSH
10408: LD_INT 10
10410: EQUAL
10411: OR
10412: IFFALSE 10453
// begin amChassisTab = [ 4 , 5 ] ;
10414: LD_ADDR_VAR 0 19
10418: PUSH
10419: LD_INT 4
10421: PUSH
10422: LD_INT 5
10424: PUSH
10425: EMPTY
10426: LIST
10427: LIST
10428: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
10429: LD_ADDR_OWVAR 37
10433: PUSH
10434: LD_VAR 0 19
10438: PUSH
10439: LD_INT 1
10441: PPUSH
10442: LD_VAR 0 19
10446: PPUSH
10447: CALL_OW 12
10451: ARRAY
10452: ST_TO_ADDR
// end ; veh = CreateVehicle ;
10453: LD_ADDR_VAR 0 16
10457: PUSH
10458: CALL_OW 45
10462: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
10463: LD_VAR 0 16
10467: PPUSH
10468: LD_VAR 0 1
10472: PPUSH
10473: LD_INT 0
10475: PPUSH
10476: CALL_OW 49
// if vc_control = 1 then
10480: LD_OWVAR 38
10484: PUSH
10485: LD_INT 1
10487: EQUAL
10488: IFFALSE 10616
// begin hc_gallery =  ;
10490: LD_ADDR_OWVAR 33
10494: PUSH
10495: LD_STRING 
10497: ST_TO_ADDR
// hc_name =  ;
10498: LD_ADDR_OWVAR 26
10502: PUSH
10503: LD_STRING 
10505: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10506: LD_ADDR_OWVAR 29
10510: PUSH
10511: LD_INT 9
10513: PPUSH
10514: LD_INT 11
10516: PPUSH
10517: CALL_OW 12
10521: PUSH
10522: LD_INT 10
10524: PPUSH
10525: LD_INT 12
10527: PPUSH
10528: CALL_OW 12
10532: PUSH
10533: EMPTY
10534: LIST
10535: LIST
10536: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
10537: LD_ADDR_OWVAR 31
10541: PUSH
10542: LD_VAR 0 4
10546: PUSH
10547: LD_VAR 0 4
10551: PUSH
10552: LD_VAR 0 4
10556: PUSH
10557: LD_VAR 0 4
10561: PUSH
10562: EMPTY
10563: LIST
10564: LIST
10565: LIST
10566: LIST
10567: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10568: LD_ADDR_OWVAR 27
10572: PUSH
10573: LD_INT 1
10575: PPUSH
10576: LD_INT 2
10578: PPUSH
10579: CALL_OW 12
10583: ST_TO_ADDR
// hc_class = 3 ;
10584: LD_ADDR_OWVAR 28
10588: PUSH
10589: LD_INT 3
10591: ST_TO_ADDR
// un = CreateHuman ;
10592: LD_ADDR_VAR 0 15
10596: PUSH
10597: CALL_OW 44
10601: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
10602: LD_VAR 0 15
10606: PPUSH
10607: LD_VAR 0 16
10611: PPUSH
10612: CALL_OW 52
// end ; i = i + 1 ;
10616: LD_ADDR_VAR 0 13
10620: PUSH
10621: LD_VAR 0 13
10625: PUSH
10626: LD_INT 1
10628: PLUS
10629: ST_TO_ADDR
// end ; if nation = 2 then
10630: LD_VAR 0 5
10634: PUSH
10635: LD_INT 2
10637: EQUAL
10638: IFFALSE 11055
// begin uc_side = side ;
10640: LD_ADDR_OWVAR 20
10644: PUSH
10645: LD_VAR 0 2
10649: ST_TO_ADDR
// uc_nation = nation ;
10650: LD_ADDR_OWVAR 21
10654: PUSH
10655: LD_VAR 0 5
10659: ST_TO_ADDR
// vc_engine = vehengine ;
10660: LD_ADDR_OWVAR 39
10664: PUSH
10665: LD_VAR 0 6
10669: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
10670: LD_ADDR_OWVAR 38
10674: PUSH
10675: LD_VAR 0 7
10679: PUSH
10680: LD_INT 1
10682: PPUSH
10683: LD_VAR 0 7
10687: PPUSH
10688: CALL_OW 12
10692: ARRAY
10693: ST_TO_ADDR
// vc_weapon = ARWeapons [ Rand ( 1 , ARWeapons ) ] ;
10694: LD_ADDR_OWVAR 40
10698: PUSH
10699: LD_VAR 0 9
10703: PUSH
10704: LD_INT 1
10706: PPUSH
10707: LD_VAR 0 9
10711: PPUSH
10712: CALL_OW 12
10716: ARRAY
10717: ST_TO_ADDR
// if vc_weapon = 24 or vc_weapon = 22 or vc_weapon = 23 or vc_weapon = 30 then
10718: LD_OWVAR 40
10722: PUSH
10723: LD_INT 24
10725: EQUAL
10726: PUSH
10727: LD_OWVAR 40
10731: PUSH
10732: LD_INT 22
10734: EQUAL
10735: OR
10736: PUSH
10737: LD_OWVAR 40
10741: PUSH
10742: LD_INT 23
10744: EQUAL
10745: OR
10746: PUSH
10747: LD_OWVAR 40
10751: PUSH
10752: LD_INT 30
10754: EQUAL
10755: OR
10756: IFFALSE 10793
// begin arChassisTab = [ 14 ] ;
10758: LD_ADDR_VAR 0 18
10762: PUSH
10763: LD_INT 14
10765: PUSH
10766: EMPTY
10767: LIST
10768: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , arChassisTab ) ] ;
10769: LD_ADDR_OWVAR 37
10773: PUSH
10774: LD_VAR 0 18
10778: PUSH
10779: LD_INT 1
10781: PPUSH
10782: LD_VAR 0 18
10786: PPUSH
10787: CALL_OW 12
10791: ARRAY
10792: ST_TO_ADDR
// end ; if vc_weapon = 29 or vc_weapon = 28 or vc_weapon = 27 or vc_weapon = 26 or vc_weapon = 25 then
10793: LD_OWVAR 40
10797: PUSH
10798: LD_INT 29
10800: EQUAL
10801: PUSH
10802: LD_OWVAR 40
10806: PUSH
10807: LD_INT 28
10809: EQUAL
10810: OR
10811: PUSH
10812: LD_OWVAR 40
10816: PUSH
10817: LD_INT 27
10819: EQUAL
10820: OR
10821: PUSH
10822: LD_OWVAR 40
10826: PUSH
10827: LD_INT 26
10829: EQUAL
10830: OR
10831: PUSH
10832: LD_OWVAR 40
10836: PUSH
10837: LD_INT 25
10839: EQUAL
10840: OR
10841: IFFALSE 10878
// begin arChassisTab = [ 14 ] ;
10843: LD_ADDR_VAR 0 18
10847: PUSH
10848: LD_INT 14
10850: PUSH
10851: EMPTY
10852: LIST
10853: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , arChassisTab ) ] ;
10854: LD_ADDR_OWVAR 37
10858: PUSH
10859: LD_VAR 0 18
10863: PUSH
10864: LD_INT 1
10866: PPUSH
10867: LD_VAR 0 18
10871: PPUSH
10872: CALL_OW 12
10876: ARRAY
10877: ST_TO_ADDR
// end ; veh = CreateVehicle ;
10878: LD_ADDR_VAR 0 16
10882: PUSH
10883: CALL_OW 45
10887: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
10888: LD_VAR 0 16
10892: PPUSH
10893: LD_VAR 0 1
10897: PPUSH
10898: LD_INT 0
10900: PPUSH
10901: CALL_OW 49
// if vc_control = 1 then
10905: LD_OWVAR 38
10909: PUSH
10910: LD_INT 1
10912: EQUAL
10913: IFFALSE 11041
// begin hc_gallery =  ;
10915: LD_ADDR_OWVAR 33
10919: PUSH
10920: LD_STRING 
10922: ST_TO_ADDR
// hc_name =  ;
10923: LD_ADDR_OWVAR 26
10927: PUSH
10928: LD_STRING 
10930: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10931: LD_ADDR_OWVAR 29
10935: PUSH
10936: LD_INT 9
10938: PPUSH
10939: LD_INT 11
10941: PPUSH
10942: CALL_OW 12
10946: PUSH
10947: LD_INT 10
10949: PPUSH
10950: LD_INT 12
10952: PPUSH
10953: CALL_OW 12
10957: PUSH
10958: EMPTY
10959: LIST
10960: LIST
10961: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
10962: LD_ADDR_OWVAR 31
10966: PUSH
10967: LD_VAR 0 4
10971: PUSH
10972: LD_VAR 0 4
10976: PUSH
10977: LD_VAR 0 4
10981: PUSH
10982: LD_VAR 0 4
10986: PUSH
10987: EMPTY
10988: LIST
10989: LIST
10990: LIST
10991: LIST
10992: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10993: LD_ADDR_OWVAR 27
10997: PUSH
10998: LD_INT 1
11000: PPUSH
11001: LD_INT 2
11003: PPUSH
11004: CALL_OW 12
11008: ST_TO_ADDR
// hc_class = 3 ;
11009: LD_ADDR_OWVAR 28
11013: PUSH
11014: LD_INT 3
11016: ST_TO_ADDR
// un = CreateHuman ;
11017: LD_ADDR_VAR 0 15
11021: PUSH
11022: CALL_OW 44
11026: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
11027: LD_VAR 0 15
11031: PPUSH
11032: LD_VAR 0 16
11036: PPUSH
11037: CALL_OW 52
// end ; i = i + 1 ;
11041: LD_ADDR_VAR 0 13
11045: PUSH
11046: LD_VAR 0 13
11050: PUSH
11051: LD_INT 1
11053: PLUS
11054: ST_TO_ADDR
// end ; if nation = 3 then
11055: LD_VAR 0 5
11059: PUSH
11060: LD_INT 3
11062: EQUAL
11063: IFFALSE 11476
// begin uc_side = side ;
11065: LD_ADDR_OWVAR 20
11069: PUSH
11070: LD_VAR 0 2
11074: ST_TO_ADDR
// uc_nation = nation ;
11075: LD_ADDR_OWVAR 21
11079: PUSH
11080: LD_VAR 0 5
11084: ST_TO_ADDR
// vc_engine = vehengine ;
11085: LD_ADDR_OWVAR 39
11089: PUSH
11090: LD_VAR 0 6
11094: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
11095: LD_ADDR_OWVAR 38
11099: PUSH
11100: LD_VAR 0 7
11104: PUSH
11105: LD_INT 1
11107: PPUSH
11108: LD_VAR 0 7
11112: PPUSH
11113: CALL_OW 12
11117: ARRAY
11118: ST_TO_ADDR
// vc_weapon = RUWeapons [ Rand ( 1 , RUWeapons ) ] ;
11119: LD_ADDR_OWVAR 40
11123: PUSH
11124: LD_VAR 0 8
11128: PUSH
11129: LD_INT 1
11131: PPUSH
11132: LD_VAR 0 8
11136: PPUSH
11137: CALL_OW 12
11141: ARRAY
11142: ST_TO_ADDR
// if vc_weapon = 42 or vc_weapon = 43 or vc_weapon = 44 or vc_weapon = 45 or vc_weapon = 49 then
11143: LD_OWVAR 40
11147: PUSH
11148: LD_INT 42
11150: EQUAL
11151: PUSH
11152: LD_OWVAR 40
11156: PUSH
11157: LD_INT 43
11159: EQUAL
11160: OR
11161: PUSH
11162: LD_OWVAR 40
11166: PUSH
11167: LD_INT 44
11169: EQUAL
11170: OR
11171: PUSH
11172: LD_OWVAR 40
11176: PUSH
11177: LD_INT 45
11179: EQUAL
11180: OR
11181: PUSH
11182: LD_OWVAR 40
11186: PUSH
11187: LD_INT 49
11189: EQUAL
11190: OR
11191: IFFALSE 11240
// begin ruChassisTab = [ 21 , 22 , 23 , 24 ] ;
11193: LD_ADDR_VAR 0 17
11197: PUSH
11198: LD_INT 21
11200: PUSH
11201: LD_INT 22
11203: PUSH
11204: LD_INT 23
11206: PUSH
11207: LD_INT 24
11209: PUSH
11210: EMPTY
11211: LIST
11212: LIST
11213: LIST
11214: LIST
11215: ST_TO_ADDR
// vc_chassis = ruChassisTab [ Rand ( 1 , ruChassisTab ) ] ;
11216: LD_ADDR_OWVAR 37
11220: PUSH
11221: LD_VAR 0 17
11225: PUSH
11226: LD_INT 1
11228: PPUSH
11229: LD_VAR 0 17
11233: PPUSH
11234: CALL_OW 12
11238: ARRAY
11239: ST_TO_ADDR
// end ; if vc_weapon = 46 or vc_weapon = 47 then
11240: LD_OWVAR 40
11244: PUSH
11245: LD_INT 46
11247: EQUAL
11248: PUSH
11249: LD_OWVAR 40
11253: PUSH
11254: LD_INT 47
11256: EQUAL
11257: OR
11258: IFFALSE 11299
// begin ruChassisTab = [ 23 , 24 ] ;
11260: LD_ADDR_VAR 0 17
11264: PUSH
11265: LD_INT 23
11267: PUSH
11268: LD_INT 24
11270: PUSH
11271: EMPTY
11272: LIST
11273: LIST
11274: ST_TO_ADDR
// vc_chassis = ruChassisTab [ Rand ( 1 , ruChassisTab ) ] ;
11275: LD_ADDR_OWVAR 37
11279: PUSH
11280: LD_VAR 0 17
11284: PUSH
11285: LD_INT 1
11287: PPUSH
11288: LD_VAR 0 17
11292: PPUSH
11293: CALL_OW 12
11297: ARRAY
11298: ST_TO_ADDR
// end ; veh = CreateVehicle ;
11299: LD_ADDR_VAR 0 16
11303: PUSH
11304: CALL_OW 45
11308: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
11309: LD_VAR 0 16
11313: PPUSH
11314: LD_VAR 0 1
11318: PPUSH
11319: LD_INT 0
11321: PPUSH
11322: CALL_OW 49
// if vc_control = 1 then
11326: LD_OWVAR 38
11330: PUSH
11331: LD_INT 1
11333: EQUAL
11334: IFFALSE 11462
// begin hc_gallery =  ;
11336: LD_ADDR_OWVAR 33
11340: PUSH
11341: LD_STRING 
11343: ST_TO_ADDR
// hc_name =  ;
11344: LD_ADDR_OWVAR 26
11348: PUSH
11349: LD_STRING 
11351: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
11352: LD_ADDR_OWVAR 29
11356: PUSH
11357: LD_INT 9
11359: PPUSH
11360: LD_INT 11
11362: PPUSH
11363: CALL_OW 12
11367: PUSH
11368: LD_INT 10
11370: PPUSH
11371: LD_INT 12
11373: PPUSH
11374: CALL_OW 12
11378: PUSH
11379: EMPTY
11380: LIST
11381: LIST
11382: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
11383: LD_ADDR_OWVAR 31
11387: PUSH
11388: LD_VAR 0 4
11392: PUSH
11393: LD_VAR 0 4
11397: PUSH
11398: LD_VAR 0 4
11402: PUSH
11403: LD_VAR 0 4
11407: PUSH
11408: EMPTY
11409: LIST
11410: LIST
11411: LIST
11412: LIST
11413: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
11414: LD_ADDR_OWVAR 27
11418: PUSH
11419: LD_INT 1
11421: PPUSH
11422: LD_INT 2
11424: PPUSH
11425: CALL_OW 12
11429: ST_TO_ADDR
// hc_class = 3 ;
11430: LD_ADDR_OWVAR 28
11434: PUSH
11435: LD_INT 3
11437: ST_TO_ADDR
// un = CreateHuman ;
11438: LD_ADDR_VAR 0 15
11442: PUSH
11443: CALL_OW 44
11447: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
11448: LD_VAR 0 15
11452: PPUSH
11453: LD_VAR 0 16
11457: PPUSH
11458: CALL_OW 52
// end ; i = i + 1 ;
11462: LD_ADDR_VAR 0 13
11466: PUSH
11467: LD_VAR 0 13
11471: PUSH
11472: LD_INT 1
11474: PLUS
11475: ST_TO_ADDR
// end ; until i = vehCount ;
11476: LD_VAR 0 13
11480: PUSH
11481: LD_VAR 0 3
11485: EQUAL
11486: IFFALSE 10121
// repeat wait ( 0 0$1 ) ;
11488: LD_INT 35
11490: PPUSH
11491: CALL_OW 67
// vehicleOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_lives , 650 ] ] ) ;
11495: LD_ADDR_VAR 0 20
11499: PUSH
11500: LD_INT 22
11502: PUSH
11503: LD_VAR 0 2
11507: PUSH
11508: EMPTY
11509: LIST
11510: LIST
11511: PUSH
11512: LD_INT 21
11514: PUSH
11515: LD_INT 2
11517: PUSH
11518: EMPTY
11519: LIST
11520: LIST
11521: PUSH
11522: LD_INT 24
11524: PUSH
11525: LD_INT 650
11527: PUSH
11528: EMPTY
11529: LIST
11530: LIST
11531: PUSH
11532: EMPTY
11533: LIST
11534: LIST
11535: LIST
11536: PPUSH
11537: CALL_OW 69
11541: ST_TO_ADDR
// if vehicleOK_list > 0 then
11542: LD_VAR 0 20
11546: PUSH
11547: LD_INT 0
11549: GREATER
11550: IFFALSE 11741
// begin for i in vehicleOK_list do
11552: LD_ADDR_VAR 0 13
11556: PUSH
11557: LD_VAR 0 20
11561: PUSH
11562: FOR_IN
11563: IFFALSE 11739
// begin target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
11565: LD_ADDR_VAR 0 21
11569: PUSH
11570: LD_INT 81
11572: PUSH
11573: LD_VAR 0 2
11577: PUSH
11578: EMPTY
11579: LIST
11580: LIST
11581: PPUSH
11582: CALL_OW 69
11586: PPUSH
11587: LD_VAR 0 13
11591: PPUSH
11592: CALL_OW 74
11596: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
11597: LD_ADDR_VAR 0 22
11601: PUSH
11602: LD_INT 81
11604: PUSH
11605: LD_VAR 0 2
11609: PUSH
11610: EMPTY
11611: LIST
11612: LIST
11613: PUSH
11614: LD_INT 2
11616: PUSH
11617: LD_INT 59
11619: PUSH
11620: EMPTY
11621: LIST
11622: PUSH
11623: LD_INT 21
11625: PUSH
11626: LD_INT 1
11628: PUSH
11629: EMPTY
11630: LIST
11631: LIST
11632: PUSH
11633: LD_INT 21
11635: PUSH
11636: LD_INT 2
11638: PUSH
11639: EMPTY
11640: LIST
11641: LIST
11642: PUSH
11643: EMPTY
11644: LIST
11645: LIST
11646: LIST
11647: LIST
11648: PUSH
11649: EMPTY
11650: LIST
11651: LIST
11652: PUSH
11653: EMPTY
11654: LIST
11655: PPUSH
11656: CALL_OW 69
11660: PPUSH
11661: LD_VAR 0 13
11665: PPUSH
11666: CALL_OW 74
11670: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
11671: LD_VAR 0 13
11675: PPUSH
11676: LD_VAR 0 21
11680: PPUSH
11681: CALL_OW 296
11685: PUSH
11686: LD_INT 8
11688: PLUS
11689: PUSH
11690: LD_VAR 0 13
11694: PPUSH
11695: LD_VAR 0 22
11699: PPUSH
11700: CALL_OW 296
11704: LESS
11705: IFFALSE 11723
// begin ComAttackUnit ( i , target1 ) ;
11707: LD_VAR 0 13
11711: PPUSH
11712: LD_VAR 0 21
11716: PPUSH
11717: CALL_OW 115
// end else
11721: GO 11737
// begin ComAttackUnit ( i , target2 ) ;
11723: LD_VAR 0 13
11727: PPUSH
11728: LD_VAR 0 22
11732: PPUSH
11733: CALL_OW 115
// end ; end ;
11737: GO 11562
11739: POP
11740: POP
// end ; until ( FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) ) = 0 ;
11741: LD_INT 22
11743: PUSH
11744: LD_VAR 0 2
11748: PUSH
11749: EMPTY
11750: LIST
11751: LIST
11752: PUSH
11753: LD_INT 21
11755: PUSH
11756: LD_INT 2
11758: PUSH
11759: EMPTY
11760: LIST
11761: LIST
11762: PUSH
11763: EMPTY
11764: LIST
11765: LIST
11766: PPUSH
11767: CALL_OW 69
11771: PUSH
11772: LD_INT 0
11774: EQUAL
11775: IFFALSE 11488
// end ;
11777: LD_VAR 0 12
11781: RET
// export function RespawnAttackInfantry ( side , nation , soldierCount , sniperCount , bazookCount , mortalCount , medicCount , skil , spawnArea , healArea , targetSide ) ; var i , j , un , damageUnit_list , medic_list , soldiersOK_list , enemyUnits , und , target1 , target2 ; begin
11782: LD_INT 0
11784: PPUSH
11785: PPUSH
11786: PPUSH
11787: PPUSH
11788: PPUSH
11789: PPUSH
11790: PPUSH
11791: PPUSH
11792: PPUSH
11793: PPUSH
11794: PPUSH
// for i = 1 to soldierCount do
11795: LD_ADDR_VAR 0 13
11799: PUSH
11800: DOUBLE
11801: LD_INT 1
11803: DEC
11804: ST_TO_ADDR
11805: LD_VAR 0 3
11809: PUSH
11810: FOR_TO
11811: IFFALSE 11948
// begin uc_side = side ;
11813: LD_ADDR_OWVAR 20
11817: PUSH
11818: LD_VAR 0 1
11822: ST_TO_ADDR
// uc_nation = nation ;
11823: LD_ADDR_OWVAR 21
11827: PUSH
11828: LD_VAR 0 2
11832: ST_TO_ADDR
// hc_gallery =  ;
11833: LD_ADDR_OWVAR 33
11837: PUSH
11838: LD_STRING 
11840: ST_TO_ADDR
// hc_name =  ;
11841: LD_ADDR_OWVAR 26
11845: PUSH
11846: LD_STRING 
11848: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
11849: LD_ADDR_OWVAR 29
11853: PUSH
11854: LD_INT 10
11856: PUSH
11857: LD_INT 10
11859: PUSH
11860: EMPTY
11861: LIST
11862: LIST
11863: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
11864: LD_ADDR_OWVAR 31
11868: PUSH
11869: LD_VAR 0 8
11873: PUSH
11874: LD_VAR 0 8
11878: PUSH
11879: LD_VAR 0 8
11883: PUSH
11884: LD_VAR 0 8
11888: PUSH
11889: EMPTY
11890: LIST
11891: LIST
11892: LIST
11893: LIST
11894: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
11895: LD_ADDR_OWVAR 27
11899: PUSH
11900: LD_INT 1
11902: PPUSH
11903: LD_INT 2
11905: PPUSH
11906: CALL_OW 12
11910: ST_TO_ADDR
// hc_class = 1 ;
11911: LD_ADDR_OWVAR 28
11915: PUSH
11916: LD_INT 1
11918: ST_TO_ADDR
// un = CreateHuman ;
11919: LD_ADDR_VAR 0 15
11923: PUSH
11924: CALL_OW 44
11928: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
11929: LD_VAR 0 15
11933: PPUSH
11934: LD_VAR 0 9
11938: PPUSH
11939: LD_INT 0
11941: PPUSH
11942: CALL_OW 49
// end ;
11946: GO 11810
11948: POP
11949: POP
// for i = 1 to sniperCount do
11950: LD_ADDR_VAR 0 13
11954: PUSH
11955: DOUBLE
11956: LD_INT 1
11958: DEC
11959: ST_TO_ADDR
11960: LD_VAR 0 4
11964: PUSH
11965: FOR_TO
11966: IFFALSE 12103
// begin uc_side = side ;
11968: LD_ADDR_OWVAR 20
11972: PUSH
11973: LD_VAR 0 1
11977: ST_TO_ADDR
// uc_nation = nation ;
11978: LD_ADDR_OWVAR 21
11982: PUSH
11983: LD_VAR 0 2
11987: ST_TO_ADDR
// hc_gallery =  ;
11988: LD_ADDR_OWVAR 33
11992: PUSH
11993: LD_STRING 
11995: ST_TO_ADDR
// hc_name =  ;
11996: LD_ADDR_OWVAR 26
12000: PUSH
12001: LD_STRING 
12003: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
12004: LD_ADDR_OWVAR 29
12008: PUSH
12009: LD_INT 10
12011: PUSH
12012: LD_INT 10
12014: PUSH
12015: EMPTY
12016: LIST
12017: LIST
12018: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
12019: LD_ADDR_OWVAR 31
12023: PUSH
12024: LD_VAR 0 8
12028: PUSH
12029: LD_VAR 0 8
12033: PUSH
12034: LD_VAR 0 8
12038: PUSH
12039: LD_VAR 0 8
12043: PUSH
12044: EMPTY
12045: LIST
12046: LIST
12047: LIST
12048: LIST
12049: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12050: LD_ADDR_OWVAR 27
12054: PUSH
12055: LD_INT 1
12057: PPUSH
12058: LD_INT 2
12060: PPUSH
12061: CALL_OW 12
12065: ST_TO_ADDR
// hc_class = 5 ;
12066: LD_ADDR_OWVAR 28
12070: PUSH
12071: LD_INT 5
12073: ST_TO_ADDR
// un = CreateHuman ;
12074: LD_ADDR_VAR 0 15
12078: PUSH
12079: CALL_OW 44
12083: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
12084: LD_VAR 0 15
12088: PPUSH
12089: LD_VAR 0 9
12093: PPUSH
12094: LD_INT 0
12096: PPUSH
12097: CALL_OW 49
// end ;
12101: GO 11965
12103: POP
12104: POP
// for i = 1 to bazookCount do
12105: LD_ADDR_VAR 0 13
12109: PUSH
12110: DOUBLE
12111: LD_INT 1
12113: DEC
12114: ST_TO_ADDR
12115: LD_VAR 0 5
12119: PUSH
12120: FOR_TO
12121: IFFALSE 12258
// begin uc_side = side ;
12123: LD_ADDR_OWVAR 20
12127: PUSH
12128: LD_VAR 0 1
12132: ST_TO_ADDR
// uc_nation = nation ;
12133: LD_ADDR_OWVAR 21
12137: PUSH
12138: LD_VAR 0 2
12142: ST_TO_ADDR
// hc_gallery =  ;
12143: LD_ADDR_OWVAR 33
12147: PUSH
12148: LD_STRING 
12150: ST_TO_ADDR
// hc_name =  ;
12151: LD_ADDR_OWVAR 26
12155: PUSH
12156: LD_STRING 
12158: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
12159: LD_ADDR_OWVAR 29
12163: PUSH
12164: LD_INT 10
12166: PUSH
12167: LD_INT 10
12169: PUSH
12170: EMPTY
12171: LIST
12172: LIST
12173: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
12174: LD_ADDR_OWVAR 31
12178: PUSH
12179: LD_VAR 0 8
12183: PUSH
12184: LD_VAR 0 8
12188: PUSH
12189: LD_VAR 0 8
12193: PUSH
12194: LD_VAR 0 8
12198: PUSH
12199: EMPTY
12200: LIST
12201: LIST
12202: LIST
12203: LIST
12204: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12205: LD_ADDR_OWVAR 27
12209: PUSH
12210: LD_INT 1
12212: PPUSH
12213: LD_INT 2
12215: PPUSH
12216: CALL_OW 12
12220: ST_TO_ADDR
// hc_class = 9 ;
12221: LD_ADDR_OWVAR 28
12225: PUSH
12226: LD_INT 9
12228: ST_TO_ADDR
// un = CreateHuman ;
12229: LD_ADDR_VAR 0 15
12233: PUSH
12234: CALL_OW 44
12238: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
12239: LD_VAR 0 15
12243: PPUSH
12244: LD_VAR 0 9
12248: PPUSH
12249: LD_INT 0
12251: PPUSH
12252: CALL_OW 49
// end ;
12256: GO 12120
12258: POP
12259: POP
// for i = 1 to mortalCount do
12260: LD_ADDR_VAR 0 13
12264: PUSH
12265: DOUBLE
12266: LD_INT 1
12268: DEC
12269: ST_TO_ADDR
12270: LD_VAR 0 6
12274: PUSH
12275: FOR_TO
12276: IFFALSE 12413
// begin uc_side = side ;
12278: LD_ADDR_OWVAR 20
12282: PUSH
12283: LD_VAR 0 1
12287: ST_TO_ADDR
// uc_nation = nation ;
12288: LD_ADDR_OWVAR 21
12292: PUSH
12293: LD_VAR 0 2
12297: ST_TO_ADDR
// hc_gallery =  ;
12298: LD_ADDR_OWVAR 33
12302: PUSH
12303: LD_STRING 
12305: ST_TO_ADDR
// hc_name =  ;
12306: LD_ADDR_OWVAR 26
12310: PUSH
12311: LD_STRING 
12313: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
12314: LD_ADDR_OWVAR 29
12318: PUSH
12319: LD_INT 10
12321: PUSH
12322: LD_INT 10
12324: PUSH
12325: EMPTY
12326: LIST
12327: LIST
12328: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
12329: LD_ADDR_OWVAR 31
12333: PUSH
12334: LD_VAR 0 8
12338: PUSH
12339: LD_VAR 0 8
12343: PUSH
12344: LD_VAR 0 8
12348: PUSH
12349: LD_VAR 0 8
12353: PUSH
12354: EMPTY
12355: LIST
12356: LIST
12357: LIST
12358: LIST
12359: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12360: LD_ADDR_OWVAR 27
12364: PUSH
12365: LD_INT 1
12367: PPUSH
12368: LD_INT 2
12370: PPUSH
12371: CALL_OW 12
12375: ST_TO_ADDR
// hc_class = 8 ;
12376: LD_ADDR_OWVAR 28
12380: PUSH
12381: LD_INT 8
12383: ST_TO_ADDR
// un = CreateHuman ;
12384: LD_ADDR_VAR 0 15
12388: PUSH
12389: CALL_OW 44
12393: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
12394: LD_VAR 0 15
12398: PPUSH
12399: LD_VAR 0 9
12403: PPUSH
12404: LD_INT 0
12406: PPUSH
12407: CALL_OW 49
// end ;
12411: GO 12275
12413: POP
12414: POP
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] ] ) ;
12415: LD_ADDR_VAR 0 18
12419: PUSH
12420: LD_INT 22
12422: PUSH
12423: LD_VAR 0 1
12427: PUSH
12428: EMPTY
12429: LIST
12430: LIST
12431: PUSH
12432: LD_INT 2
12434: PUSH
12435: LD_INT 25
12437: PUSH
12438: LD_INT 1
12440: PUSH
12441: EMPTY
12442: LIST
12443: LIST
12444: PUSH
12445: LD_INT 25
12447: PUSH
12448: LD_INT 5
12450: PUSH
12451: EMPTY
12452: LIST
12453: LIST
12454: PUSH
12455: LD_INT 25
12457: PUSH
12458: LD_INT 8
12460: PUSH
12461: EMPTY
12462: LIST
12463: LIST
12464: PUSH
12465: LD_INT 25
12467: PUSH
12468: LD_INT 9
12470: PUSH
12471: EMPTY
12472: LIST
12473: LIST
12474: PUSH
12475: EMPTY
12476: LIST
12477: LIST
12478: LIST
12479: LIST
12480: LIST
12481: PUSH
12482: EMPTY
12483: LIST
12484: LIST
12485: PPUSH
12486: CALL_OW 69
12490: ST_TO_ADDR
// medic_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] ] ) ;
12491: LD_ADDR_VAR 0 17
12495: PUSH
12496: LD_INT 22
12498: PUSH
12499: LD_VAR 0 1
12503: PUSH
12504: EMPTY
12505: LIST
12506: LIST
12507: PUSH
12508: LD_INT 25
12510: PUSH
12511: LD_INT 4
12513: PUSH
12514: EMPTY
12515: LIST
12516: LIST
12517: PUSH
12518: EMPTY
12519: LIST
12520: LIST
12521: PPUSH
12522: CALL_OW 69
12526: ST_TO_ADDR
// for i in medic_list do
12527: LD_ADDR_VAR 0 13
12531: PUSH
12532: LD_VAR 0 17
12536: PUSH
12537: FOR_IN
12538: IFFALSE 12556
// ComMoveToArea ( i , healArea ) ;
12540: LD_VAR 0 13
12544: PPUSH
12545: LD_VAR 0 10
12549: PPUSH
12550: CALL_OW 113
12554: GO 12537
12556: POP
12557: POP
// repeat wait ( 0 0$1 ) ;
12558: LD_INT 35
12560: PPUSH
12561: CALL_OW 67
// damageUnit_list = FilterAllUnits ( [ [ f_side , side ] , [ f_and , [ f_not , [ f_lives , 550 ] ] , [ f_lives , 250 ] ] ] ) ;
12565: LD_ADDR_VAR 0 16
12569: PUSH
12570: LD_INT 22
12572: PUSH
12573: LD_VAR 0 1
12577: PUSH
12578: EMPTY
12579: LIST
12580: LIST
12581: PUSH
12582: LD_INT 1
12584: PUSH
12585: LD_INT 3
12587: PUSH
12588: LD_INT 24
12590: PUSH
12591: LD_INT 550
12593: PUSH
12594: EMPTY
12595: LIST
12596: LIST
12597: PUSH
12598: EMPTY
12599: LIST
12600: LIST
12601: PUSH
12602: LD_INT 24
12604: PUSH
12605: LD_INT 250
12607: PUSH
12608: EMPTY
12609: LIST
12610: LIST
12611: PUSH
12612: EMPTY
12613: LIST
12614: LIST
12615: LIST
12616: PUSH
12617: EMPTY
12618: LIST
12619: LIST
12620: PPUSH
12621: CALL_OW 69
12625: ST_TO_ADDR
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] , [ f_lives , 1000 ] ] ) ;
12626: LD_ADDR_VAR 0 18
12630: PUSH
12631: LD_INT 22
12633: PUSH
12634: LD_VAR 0 1
12638: PUSH
12639: EMPTY
12640: LIST
12641: LIST
12642: PUSH
12643: LD_INT 2
12645: PUSH
12646: LD_INT 25
12648: PUSH
12649: LD_INT 1
12651: PUSH
12652: EMPTY
12653: LIST
12654: LIST
12655: PUSH
12656: LD_INT 25
12658: PUSH
12659: LD_INT 5
12661: PUSH
12662: EMPTY
12663: LIST
12664: LIST
12665: PUSH
12666: LD_INT 25
12668: PUSH
12669: LD_INT 8
12671: PUSH
12672: EMPTY
12673: LIST
12674: LIST
12675: PUSH
12676: LD_INT 25
12678: PUSH
12679: LD_INT 9
12681: PUSH
12682: EMPTY
12683: LIST
12684: LIST
12685: PUSH
12686: EMPTY
12687: LIST
12688: LIST
12689: LIST
12690: LIST
12691: LIST
12692: PUSH
12693: LD_INT 24
12695: PUSH
12696: LD_INT 1000
12698: PUSH
12699: EMPTY
12700: LIST
12701: LIST
12702: PUSH
12703: EMPTY
12704: LIST
12705: LIST
12706: LIST
12707: PPUSH
12708: CALL_OW 69
12712: ST_TO_ADDR
// for i in soldiersOK_list do
12713: LD_ADDR_VAR 0 13
12717: PUSH
12718: LD_VAR 0 18
12722: PUSH
12723: FOR_IN
12724: IFFALSE 12900
// begin target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
12726: LD_ADDR_VAR 0 21
12730: PUSH
12731: LD_INT 81
12733: PUSH
12734: LD_VAR 0 1
12738: PUSH
12739: EMPTY
12740: LIST
12741: LIST
12742: PPUSH
12743: CALL_OW 69
12747: PPUSH
12748: LD_VAR 0 13
12752: PPUSH
12753: CALL_OW 74
12757: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
12758: LD_ADDR_VAR 0 22
12762: PUSH
12763: LD_INT 81
12765: PUSH
12766: LD_VAR 0 1
12770: PUSH
12771: EMPTY
12772: LIST
12773: LIST
12774: PUSH
12775: LD_INT 2
12777: PUSH
12778: LD_INT 59
12780: PUSH
12781: EMPTY
12782: LIST
12783: PUSH
12784: LD_INT 21
12786: PUSH
12787: LD_INT 1
12789: PUSH
12790: EMPTY
12791: LIST
12792: LIST
12793: PUSH
12794: LD_INT 21
12796: PUSH
12797: LD_INT 2
12799: PUSH
12800: EMPTY
12801: LIST
12802: LIST
12803: PUSH
12804: EMPTY
12805: LIST
12806: LIST
12807: LIST
12808: LIST
12809: PUSH
12810: EMPTY
12811: LIST
12812: LIST
12813: PUSH
12814: EMPTY
12815: LIST
12816: PPUSH
12817: CALL_OW 69
12821: PPUSH
12822: LD_VAR 0 13
12826: PPUSH
12827: CALL_OW 74
12831: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
12832: LD_VAR 0 13
12836: PPUSH
12837: LD_VAR 0 21
12841: PPUSH
12842: CALL_OW 296
12846: PUSH
12847: LD_INT 8
12849: PLUS
12850: PUSH
12851: LD_VAR 0 13
12855: PPUSH
12856: LD_VAR 0 22
12860: PPUSH
12861: CALL_OW 296
12865: LESS
12866: IFFALSE 12884
// begin ComAttackUnit ( i , target1 ) ;
12868: LD_VAR 0 13
12872: PPUSH
12873: LD_VAR 0 21
12877: PPUSH
12878: CALL_OW 115
// end else
12882: GO 12898
// begin ComAttackUnit ( i , target2 ) ;
12884: LD_VAR 0 13
12888: PPUSH
12889: LD_VAR 0 22
12893: PPUSH
12894: CALL_OW 115
// end ; end ;
12898: GO 12723
12900: POP
12901: POP
// until soldiersOK_list = [ ] ;
12902: LD_VAR 0 18
12906: PUSH
12907: EMPTY
12908: EQUAL
12909: IFFALSE 12558
// end ; end_of_file
12911: LD_VAR 0 12
12915: RET
// every 0 0$1 do
12916: GO 12918
12918: DISABLE
// begin ResAllTechs ( randomedColors [ 1 ] , rulab1 , 3 ) ;
12919: LD_EXP 42
12923: PUSH
12924: LD_INT 1
12926: ARRAY
12927: PPUSH
12928: LD_INT 68
12930: PPUSH
12931: LD_INT 3
12933: PPUSH
12934: CALL 7774 0 3
// ResAllTechs ( randomedColors [ 1 ] , rulab2 , 3 ) ;
12938: LD_EXP 42
12942: PUSH
12943: LD_INT 1
12945: ARRAY
12946: PPUSH
12947: LD_INT 72
12949: PPUSH
12950: LD_INT 3
12952: PPUSH
12953: CALL 7774 0 3
// end ;
12957: END
// every 0 0$1 trigger FilterAllUnits ( [ f_side , randomedColors [ 1 ] ] ) > 0 do
12958: LD_INT 22
12960: PUSH
12961: LD_EXP 42
12965: PUSH
12966: LD_INT 1
12968: ARRAY
12969: PUSH
12970: EMPTY
12971: LIST
12972: LIST
12973: PPUSH
12974: CALL_OW 69
12978: PUSH
12979: LD_INT 0
12981: GREATER
12982: IFFALSE 13139
12984: GO 12986
12986: DISABLE
// begin if AIDepotDest = 0 then
12987: LD_EXP 41
12991: PUSH
12992: LD_INT 0
12994: EQUAL
12995: IFFALSE 13013
// EnterBunkerOrBarrack ( randomedColors [ 1 ] , RussianBase ) ;
12997: LD_EXP 42
13001: PUSH
13002: LD_INT 1
13004: ARRAY
13005: PPUSH
13006: LD_INT 7
13008: PPUSH
13009: CALL 8372 0 2
// RepairAndRebuildBase ( randomedColors [ 1 ] , rudepot , RussianBase , rudestroyedBuildings ) ;
13013: LD_EXP 42
13017: PUSH
13018: LD_INT 1
13020: ARRAY
13021: PPUSH
13022: LD_INT 52
13024: PPUSH
13025: LD_INT 7
13027: PPUSH
13028: LD_EXP 40
13032: PPUSH
13033: CALL 8797 0 4
// HealUnitInBase ( randomedColors [ 1 ] , RussianHealArea , RussianBase , [ rulab1 , rulab2 ] ) ;
13037: LD_EXP 42
13041: PUSH
13042: LD_INT 1
13044: ARRAY
13045: PPUSH
13046: LD_INT 8
13048: PPUSH
13049: LD_INT 7
13051: PPUSH
13052: LD_INT 68
13054: PUSH
13055: LD_INT 72
13057: PUSH
13058: EMPTY
13059: LIST
13060: LIST
13061: PPUSH
13062: CALL 9155 0 4
// IntBazooka ( randomedColors [ 1 ] , sideP1 ) ;
13066: LD_EXP 42
13070: PUSH
13071: LD_INT 1
13073: ARRAY
13074: PPUSH
13075: LD_EXP 43
13079: PPUSH
13080: CALL 8044 0 2
// IntBazooka ( randomedColors [ 1 ] , sideP2 ) ;
13084: LD_EXP 42
13088: PUSH
13089: LD_INT 1
13091: ARRAY
13092: PPUSH
13093: LD_EXP 44
13097: PPUSH
13098: CALL 8044 0 2
// IntBazooka ( randomedColors [ 2 ] , sideP1 ) ;
13102: LD_EXP 42
13106: PUSH
13107: LD_INT 2
13109: ARRAY
13110: PPUSH
13111: LD_EXP 43
13115: PPUSH
13116: CALL 8044 0 2
// IntBazooka ( randomedColors [ 2 ] , sideP2 ) ;
13120: LD_EXP 42
13124: PUSH
13125: LD_INT 2
13127: ARRAY
13128: PPUSH
13129: LD_EXP 44
13133: PPUSH
13134: CALL 8044 0 2
// enable ;
13138: ENABLE
// end ;
13139: END
// every 0 0$1 trigger IsDying ( rudepot ) or not GetSide ( rudepot ) = randomedColors [ 1 ] do
13140: LD_INT 52
13142: PPUSH
13143: CALL_OW 303
13147: PUSH
13148: LD_INT 52
13150: PPUSH
13151: CALL_OW 255
13155: PUSH
13156: LD_EXP 42
13160: PUSH
13161: LD_INT 1
13163: ARRAY
13164: EQUAL
13165: NOT
13166: OR
13167: IFFALSE 13185
13169: GO 13171
13171: DISABLE
// DefendDepot ( randomedColors [ 1 ] ) ;
13172: LD_EXP 42
13176: PUSH
13177: LD_INT 1
13179: ARRAY
13180: PPUSH
13181: CALL 7859 0 1
13185: END
// every 6 6$0 + 5 5$0 do
13186: GO 13188
13188: DISABLE
// begin enable ;
13189: ENABLE
// BuildingVehicleEnemy ( rufab1 , 5 , [ 44 , 45 , 46 , 47 ] , 3 , 3 , 24 ) ;
13190: LD_INT 53
13192: PPUSH
13193: LD_INT 5
13195: PPUSH
13196: LD_INT 44
13198: PUSH
13199: LD_INT 45
13201: PUSH
13202: LD_INT 46
13204: PUSH
13205: LD_INT 47
13207: PUSH
13208: EMPTY
13209: LIST
13210: LIST
13211: LIST
13212: LIST
13213: PPUSH
13214: LD_INT 3
13216: PPUSH
13217: LD_INT 3
13219: PPUSH
13220: LD_INT 24
13222: PPUSH
13223: CALL 9699 0 6
// BuildingVehicleEnemy ( rufab2 , 5 , [ 44 , 45 , 46 , 47 ] , 3 , 3 , 24 ) ;
13227: LD_INT 54
13229: PPUSH
13230: LD_INT 5
13232: PPUSH
13233: LD_INT 44
13235: PUSH
13236: LD_INT 45
13238: PUSH
13239: LD_INT 46
13241: PUSH
13242: LD_INT 47
13244: PUSH
13245: EMPTY
13246: LIST
13247: LIST
13248: LIST
13249: LIST
13250: PPUSH
13251: LD_INT 3
13253: PPUSH
13254: LD_INT 3
13256: PPUSH
13257: LD_INT 24
13259: PPUSH
13260: CALL 9699 0 6
// end ;
13264: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_type , unit_vehicle ] , [ f_lives , 250 ] ] ) >= 10 do
13265: LD_INT 22
13267: PUSH
13268: LD_EXP 42
13272: PUSH
13273: LD_INT 1
13275: ARRAY
13276: PUSH
13277: EMPTY
13278: LIST
13279: LIST
13280: PUSH
13281: LD_INT 21
13283: PUSH
13284: LD_INT 2
13286: PUSH
13287: EMPTY
13288: LIST
13289: LIST
13290: PUSH
13291: LD_INT 24
13293: PUSH
13294: LD_INT 250
13296: PUSH
13297: EMPTY
13298: LIST
13299: LIST
13300: PUSH
13301: EMPTY
13302: LIST
13303: LIST
13304: LIST
13305: PPUSH
13306: CALL_OW 69
13310: PUSH
13311: LD_INT 10
13313: GREATEREQUAL
13314: IFFALSE 13509
13316: GO 13318
13318: DISABLE
// begin ComEnterUnit ( FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_type , unit_vehicle ] , [ f_lives , 250 ] ] ) , rutp ) ;
13319: LD_INT 22
13321: PUSH
13322: LD_EXP 42
13326: PUSH
13327: LD_INT 1
13329: ARRAY
13330: PUSH
13331: EMPTY
13332: LIST
13333: LIST
13334: PUSH
13335: LD_INT 21
13337: PUSH
13338: LD_INT 2
13340: PUSH
13341: EMPTY
13342: LIST
13343: LIST
13344: PUSH
13345: LD_INT 24
13347: PUSH
13348: LD_INT 250
13350: PUSH
13351: EMPTY
13352: LIST
13353: LIST
13354: PUSH
13355: EMPTY
13356: LIST
13357: LIST
13358: LIST
13359: PPUSH
13360: CALL_OW 69
13364: PPUSH
13365: LD_INT 92
13367: PPUSH
13368: CALL_OW 120
// wait ( 0 0$15 ) ;
13372: LD_INT 525
13374: PPUSH
13375: CALL_OW 67
// EnemyVehicleAttack ( randomedColors [ 1 ] ) ;
13379: LD_EXP 42
13383: PUSH
13384: LD_INT 1
13386: ARRAY
13387: PPUSH
13388: CALL 9774 0 1
// if GetSide ( rufab1 ) = randomedColors [ 1 ] and IsOk ( rufab1 ) then
13392: LD_INT 53
13394: PPUSH
13395: CALL_OW 255
13399: PUSH
13400: LD_EXP 42
13404: PUSH
13405: LD_INT 1
13407: ARRAY
13408: EQUAL
13409: PUSH
13410: LD_INT 53
13412: PPUSH
13413: CALL_OW 302
13417: AND
13418: IFFALSE 13450
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab1 , difficulty_level , 3 , 4 ) ;
13420: LD_EXP 42
13424: PUSH
13425: LD_INT 1
13427: ARRAY
13428: PPUSH
13429: LD_INT 3
13431: PPUSH
13432: LD_INT 53
13434: PPUSH
13435: LD_EXP 39
13439: PPUSH
13440: LD_INT 3
13442: PPUSH
13443: LD_INT 4
13445: PPUSH
13446: CALL 7601 0 6
// if GetSide ( rufab2 ) = randomedColors [ 1 ] and IsOk ( rufab2 ) then
13450: LD_INT 54
13452: PPUSH
13453: CALL_OW 255
13457: PUSH
13458: LD_EXP 42
13462: PUSH
13463: LD_INT 1
13465: ARRAY
13466: EQUAL
13467: PUSH
13468: LD_INT 54
13470: PPUSH
13471: CALL_OW 302
13475: AND
13476: IFFALSE 13508
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab2 , difficulty_level , 3 , 4 ) ;
13478: LD_EXP 42
13482: PUSH
13483: LD_INT 1
13485: ARRAY
13486: PPUSH
13487: LD_INT 3
13489: PPUSH
13490: LD_INT 54
13492: PPUSH
13493: LD_EXP 39
13497: PPUSH
13498: LD_INT 3
13500: PPUSH
13501: LD_INT 4
13503: PPUSH
13504: CALL 7601 0 6
// enable ;
13508: ENABLE
// end ;
13509: END
// every 20 20$0 do
13510: GO 13512
13512: DISABLE
// begin RespawnAttackVehicle ( AttackSpawn , randomedColors [ 2 ] , difficulty_level + 3 , difficulty_level , 3 , 3 , [ 3 , 3 ] , [ 44 , 45 , 46 , 47 ] , [ ] , [ ] , 1 ) ;
13513: LD_INT 9
13515: PPUSH
13516: LD_EXP 42
13520: PUSH
13521: LD_INT 2
13523: ARRAY
13524: PPUSH
13525: LD_EXP 39
13529: PUSH
13530: LD_INT 3
13532: PLUS
13533: PPUSH
13534: LD_EXP 39
13538: PPUSH
13539: LD_INT 3
13541: PPUSH
13542: LD_INT 3
13544: PPUSH
13545: LD_INT 3
13547: PUSH
13548: LD_INT 3
13550: PUSH
13551: EMPTY
13552: LIST
13553: LIST
13554: PPUSH
13555: LD_INT 44
13557: PUSH
13558: LD_INT 45
13560: PUSH
13561: LD_INT 46
13563: PUSH
13564: LD_INT 47
13566: PUSH
13567: EMPTY
13568: LIST
13569: LIST
13570: LIST
13571: LIST
13572: PPUSH
13573: EMPTY
13574: PPUSH
13575: EMPTY
13576: PPUSH
13577: LD_INT 1
13579: PPUSH
13580: CALL 10087 0 11
// enable ;
13584: ENABLE
// end ;
13585: END
// every 20 20$0 do
13586: GO 13588
13588: DISABLE
// begin RespawnAttackInfantry ( randomedColors [ 2 ] , 3 , difficulty_level + 3 , 0 , 3 , 0 , 0 , difficulty_level , AttackSpawn , AttackSpawn , 1 ) ;
13589: LD_EXP 42
13593: PUSH
13594: LD_INT 2
13596: ARRAY
13597: PPUSH
13598: LD_INT 3
13600: PPUSH
13601: LD_EXP 39
13605: PUSH
13606: LD_INT 3
13608: PLUS
13609: PPUSH
13610: LD_INT 0
13612: PPUSH
13613: LD_INT 3
13615: PPUSH
13616: LD_INT 0
13618: PPUSH
13619: LD_INT 0
13621: PPUSH
13622: LD_EXP 39
13626: PPUSH
13627: LD_INT 9
13629: PPUSH
13630: LD_INT 9
13632: PPUSH
13633: LD_INT 1
13635: PPUSH
13636: CALL 11782 0 11
// enable ;
13640: ENABLE
// end ;
13641: END
